using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
public class Banker : BaseVendor
{
private ArrayList m_SBInfos = new ArrayList();
protected override ArrayList SBInfos{ get { return m_SBInfos; } }
public override NpcGuild NpcGuild{ get{ return NpcGuild.MerchantsGuild; } }
private static bool Talked;
string[] say = new string[]
{
"Welcome To Dream Play",
"Need Any Help Please Page Staff",
"Please Vist Our Web Site For More Information",
"Wanna Become Staff Here Please Vist Our Web Site",
"I Really Hope You Enjoy THis Shard "
};
private static void SayRandom( string[] say, Mobile m )
{
m.Say( say[Utility.Random( say.Length )] );
}
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if( Talked != true )
{
if ( InRange( this, 10 ) )
{
SayRandom( say, this );
Talked = true;
this.Move( GetDirectionTo( m.Location ) );
SpamTimer t = new SpamTimer();
t.Start();
}
}
}
private class SpamTimer : Timer
{
public SpamTimer() : base( TimeSpan.FromSeconds( 10 ) )
{
Priority = TimerPriority.OneSecond;
}
protected override void OnTick()
{
Talked = true;
}
}
[Constructable]
public Banker() : base( "the banker" )
{
}
public override void InitSBInfo()
{
m_SBInfos.Add( new SBBanker() );
}
public static int GetBalance( Mobile from )
{
Item[] gold, checks;
return GetBalance( from, out gold, out checks );
}
public static int GetBalance( Mobile from, out Item[] gold, out Item[] checks )
{
int balance = 0;
Container bank = from.BankBox;
if ( bank != null )
{
gold = bank.FindItemsByType( typeof( Gold ) );
checks = bank.FindItemsByType( typeof( BankCheck ) );
for ( int i = 0; i < gold.Length; ++i )
balance += gold[i].Amount;
for ( int i = 0; i < checks.Length; ++i )
balance += ((BankCheck)checks[i]).Worth;
}
else
{
gold = checks = new Item[0];
}
return balance;
}
public static bool Withdraw( Mobile from, int amount )
{
Item[] gold, checks;
int balance = GetBalance( from, out gold, out checks );
if ( balance < amount )
return false;
for ( int i = 0; amount > 0 && i < gold.Length; ++i )
{
if ( gold[i].Amount <= amount )
{
amount -= gold[i].Amount;
gold[i].Delete();
}
else
{
gold[i].Amount -= amount;
amount = 0;
}
}
for ( int i = 0; amount > 0 && i < checks.Length; ++i )
{
BankCheck check = (BankCheck)checks[i];
if ( check.Worth <= amount )
{
amount -= check.Worth;
check.Delete();
}
else
{
check.Worth -= amount;
amount = 0;
}
}
return true;
}
public static bool Deposit( Mobile from, int amount )
{
BankBox box = from.BankBox;
if ( box == null )
return false;
ArrayList items = new ArrayList();
while ( amount > 0 )
{
Item item;
if ( amount < 5000 )
{
item = new Gold( amount );
amount = 0;
}
else if ( amount <= 1000000 )
{
item = new BankCheck( amount );
amount = 0;
}
else
{
item = new BankCheck( 1000000 );
amount -= 1000000;
}
if ( box.TryDropItem( from, item, false ) )
{
items.Add( item );
}
else
{
item.Delete();
foreach ( Item curItem in items )
{
curItem.Delete();
}
return false;
}
}
return true;
}
public static int DepositUpTo( Mobile from, int amount )
{
BankBox box = from.BankBox;
if ( box == null )
return 0;
int amountLeft = amount;
while ( amountLeft > 0 )
{
Item item;
int amountGiven;
if ( amountLeft < 5000 )
{
item = new Gold( amountLeft );
amountGiven = amountLeft;
}
else if ( amountLeft <= 1000000 )
{
item = new BankCheck( amountLeft );
amountGiven = amountLeft;
}
else
{
item = new BankCheck( 1000000 );
amountGiven = 1000000;
}
if ( box.TryDropItem( from, item, false ) )
{
amountLeft -= amountGiven;
}
else
{
item.Delete();
break;
}
}
return amount - amountLeft;
}
public static void Deposit( Container cont, int amount )
{
while ( amount > 0 )
{
Item item;
if ( amount < 5000 )
{
item = new Gold( amount );
amount = 0;
}
else if ( amount <= 1000000 )
{
item = new BankCheck( amount );
amount = 0;
}
else
{
item = new BankCheck( 1000000 );
amount -= 1000000;
}
cont.DropItem( item );
}
}
public Banker( Serial serial ) : base( serial )
{
}
public override bool HandlesOnSpeech( Mobile from )
{
if ( from.InRange( this.Location, 12 ) )
return true;
return base.HandlesOnSpeech( from );
}
public override void OnSpeech( SpeechEventArgs e )
{
if ( !e.Handled && e.Mobile.InRange( this.Location, 12 ) )
{
for ( int i = 0; i < e.Keywords.Length; ++i )
{
int keyword = e.Keywords[i];
switch ( keyword )
{
case 0x0000: // *withdraw*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
string[] split = e.Speech.Split( ' ' );
if ( split.Length >= 2 )
{
int amount;
try
{
amount = Convert.ToInt32( split[1] );
}
catch
{
break;
}
if ( amount > 5000 )
{
this.Say( 500381 ); // Thou canst not withdraw so much at one time!
}
else if ( amount > 0 )
{
BankBox box = e.Mobile.BankBox;
if ( box == null || !box.ConsumeTotal( typeof( Gold ), amount ) )
{
this.Say( 500384 ); // Ah, art thou trying to fool me? Thou hast not so much gold!
}
else
{
e.Mobile.AddToBackpack( new Gold( amount ) );
this.Say( 1010005 ); // Thou hast withdrawn gold from thy account.
}
}
}
break;
}
case 0x0001: // *balance*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
BankBox box = e.Mobile.BankBox;
if ( box != null )
{
this.Say( 1042759, box.TotalGold.ToString() ); // Thy current bank balance is ~1_AMOUNT~ gold.
}
break;
}
case 0x0002: // *bank*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500378 ); // Thou art a criminal and cannot access thy bank box.
break;
}
BankBox box = e.Mobile.BankBox;
if ( box != null )
box.Open();
break;
}
case 0x0003: // *check*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
string[] split = e.Speech.Split( ' ' );
if ( split.Length >= 2 )
{
int amount;
try
{
amount = Convert.ToInt32( split[1] );
}
catch
{
break;
}
if ( amount < 5000 )
{
this.Say( 1010006 ); // We cannot create checks for such a paltry amount of gold!
}
else if ( amount > 1000000 )
{
this.Say( 1010007 ); // Our policies prevent us from creating checks worth that much!
}
else
{
BankCheck check = new BankCheck( amount );
BankBox box = e.Mobile.BankBox;
if ( box == null || !box.TryDropItem( e.Mobile, check, false ) )
{
this.Say( 500386 ); // There's not enough room in your bankbox for the check!
check.Delete();
}
else if ( !box.ConsumeTotal( typeof( Gold ), amount ) )
{
this.Say( 500384 ); // Ah, art thou trying to fool me? Thou hast not so much gold!
check.Delete();
}
else
{
this.Say( 1042673, AffixType.Append, amount.ToString(), "" ); // Into your bank box I have placed a check in the amount of:
}
}
}
break;
}
}
}
}
base.OnSpeech( e );
}
public override void AddCustomContextEntries( Mobile from, ArrayList list )
{
if ( from.Alive )
list.Add( new OpenBankEntry( from, this ) );
base.AddCustomContextEntries( from, list );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}
using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
public class Banker : BaseVendor
{
private ArrayList m_SBInfos = new ArrayList();
protected override ArrayList SBInfos{ get { return m_SBInfos; } }
private DateTime m_NextTalk;
public DateTime NextTalk{ get{ return m_NextTalk; } set{ m_NextTalk = value; } }
public override NpcGuild NpcGuild{ get{ return NpcGuild.MerchantsGuild; } }
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if ( DateTime.Now >= m_NextTalk && InRange( m, 4 ) && InLOS( m ) ) // check if it's time to talk & if mobile in range & in los.
{
switch ( Utility.Random( 5 )) //the amount of lines you have it to choose from
{
case 0: Say("Welcome To Dream Play"); break; //line 1
case 1: Say("Need Any Help Please Page Staff"); break; //line 2
case 2: Say("Please Vist Our Web Site For More Information"); break; //line 3
case 3: Say("Wanna Become Staff Here Please Vist Our Web Site"); break; //line 4
case 4: Say("I Really Hope You Enjoy THis Shard"); break; //line 5
};
m_NextTalk = (DateTime.Now + TimeSpan.FromSeconds( 10 )); //channge the number 10 to the min amount of seconds to wait between talks.
}
}
[Constructable]
public Banker() : base( "the banker" )
{
}
public override void InitSBInfo()
{
m_SBInfos.Add( new SBBanker() );
}
public static int GetBalance( Mobile from )
{
Item[] gold, checks;
return GetBalance( from, out gold, out checks );
}
public static int GetBalance( Mobile from, out Item[] gold, out Item[] checks )
{
int balance = 0;
Container bank = from.BankBox;
if ( bank != null )
{
gold = bank.FindItemsByType( typeof( Gold ) );
checks = bank.FindItemsByType( typeof( BankCheck ) );
for ( int i = 0; i < gold.Length; ++i )
balance += gold[i].Amount;
for ( int i = 0; i < checks.Length; ++i )
balance += ((BankCheck)checks[i]).Worth;
}
else
{
gold = checks = new Item[0];
}
return balance;
}
public static bool Withdraw( Mobile from, int amount )
{
Item[] gold, checks;
int balance = GetBalance( from, out gold, out checks );
if ( balance < amount )
return false;
for ( int i = 0; amount > 0 && i < gold.Length; ++i )
{
if ( gold[i].Amount <= amount )
{
amount -= gold[i].Amount;
gold[i].Delete();
}
else
{
gold[i].Amount -= amount;
amount = 0;
}
}
for ( int i = 0; amount > 0 && i < checks.Length; ++i )
{
BankCheck check = (BankCheck)checks[i];
if ( check.Worth <= amount )
{
amount -= check.Worth;
check.Delete();
}
else
{
check.Worth -= amount;
amount = 0;
}
}
return true;
}
public static bool Deposit( Mobile from, int amount )
{
BankBox box = from.BankBox;
if ( box == null )
return false;
ArrayList items = new ArrayList();
while ( amount > 0 )
{
Item item;
if ( amount < 5000 )
{
item = new Gold( amount );
amount = 0;
}
else if ( amount <= 1000000 )
{
item = new BankCheck( amount );
amount = 0;
}
else
{
item = new BankCheck( 1000000 );
amount -= 1000000;
}
if ( box.TryDropItem( from, item, false ) )
{
items.Add( item );
}
else
{
item.Delete();
foreach ( Item curItem in items )
{
curItem.Delete();
}
return false;
}
}
return true;
}
public static int DepositUpTo( Mobile from, int amount )
{
BankBox box = from.BankBox;
if ( box == null )
return 0;
int amountLeft = amount;
while ( amountLeft > 0 )
{
Item item;
int amountGiven;
if ( amountLeft < 5000 )
{
item = new Gold( amountLeft );
amountGiven = amountLeft;
}
else if ( amountLeft <= 1000000 )
{
item = new BankCheck( amountLeft );
amountGiven = amountLeft;
}
else
{
item = new BankCheck( 1000000 );
amountGiven = 1000000;
}
if ( box.TryDropItem( from, item, false ) )
{
amountLeft -= amountGiven;
}
else
{
item.Delete();
break;
}
}
return amount - amountLeft;
}
public static void Deposit( Container cont, int amount )
{
while ( amount > 0 )
{
Item item;
if ( amount < 5000 )
{
item = new Gold( amount );
amount = 0;
}
else if ( amount <= 1000000 )
{
item = new BankCheck( amount );
amount = 0;
}
else
{
item = new BankCheck( 1000000 );
amount -= 1000000;
}
cont.DropItem( item );
}
}
public Banker( Serial serial ) : base( serial )
{
}
public override bool HandlesOnSpeech( Mobile from )
{
if ( from.InRange( this.Location, 12 ) )
return true;
return base.HandlesOnSpeech( from );
}
public override void OnSpeech( SpeechEventArgs e )
{
if ( !e.Handled && e.Mobile.InRange( this.Location, 12 ) )
{
for ( int i = 0; i < e.Keywords.Length; ++i )
{
int keyword = e.Keywords[i];
switch ( keyword )
{
case 0x0000: // *withdraw*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
string[] split = e.Speech.Split( ' ' );
if ( split.Length >= 2 )
{
int amount;
try
{
amount = Convert.ToInt32( split[1] );
}
catch
{
break;
}
if ( amount > 5000 )
{
this.Say( 500381 ); // Thou canst not withdraw so much at one time!
}
else if ( amount > 0 )
{
BankBox box = e.Mobile.BankBox;
if ( box == null || !box.ConsumeTotal( typeof( Gold ), amount ) )
{
this.Say( 500384 ); // Ah, art thou trying to fool me? Thou hast not so much gold!
}
else
{
e.Mobile.AddToBackpack( new Gold( amount ) );
this.Say( 1010005 ); // Thou hast withdrawn gold from thy account.
}
}
}
break;
}
case 0x0001: // *balance*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
BankBox box = e.Mobile.BankBox;
if ( box != null )
{
this.Say( 1042759, box.TotalGold.ToString() ); // Thy current bank balance is ~1_AMOUNT~ gold.
}
break;
}
case 0x0002: // *bank*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500378 ); // Thou art a criminal and cannot access thy bank box.
break;
}
BankBox box = e.Mobile.BankBox;
if ( box != null )
box.Open();
break;
}
case 0x0003: // *check*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
string[] split = e.Speech.Split( ' ' );
if ( split.Length >= 2 )
{
int amount;
try
{
amount = Convert.ToInt32( split[1] );
}
catch
{
break;
}
if ( amount < 5000 )
{
this.Say( 1010006 ); // We cannot create checks for such a paltry amount of gold!
}
else if ( amount > 1000000 )
{
this.Say( 1010007 ); // Our policies prevent us from creating checks worth that much!
}
else
{
BankCheck check = new BankCheck( amount );
BankBox box = e.Mobile.BankBox;
if ( box == null || !box.TryDropItem( e.Mobile, check, false ) )
{
this.Say( 500386 ); // There's not enough room in your bankbox for the check!
check.Delete();
}
else if ( !box.ConsumeTotal( typeof( Gold ), amount ) )
{
this.Say( 500384 ); // Ah, art thou trying to fool me? Thou hast not so much gold!
check.Delete();
}
else
{
this.Say( 1042673, AffixType.Append, amount.ToString(), "" ); // Into your bank box I have placed a check in the amount of:
}
}
}
break;
}
}
}
}
base.OnSpeech( e );
}
public override void AddCustomContextEntries( Mobile from, ArrayList list )
{
if ( from.Alive )
list.Add( new OpenBankEntry( from, this ) );
base.AddCustomContextEntries( from, list );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}
using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
public class Banker : BaseVendor
{
private ArrayList m_SBInfos = new ArrayList();
protected override ArrayList SBInfos{ get { return m_SBInfos; } }
public override NpcGuild NpcGuild{ get{ return NpcGuild.MerchantsGuild; } }
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if ( DateTime.Now >= m_NextTalk && InRange( m, 5 ) && InLOS( m ) )
{
switch ( Utility.Random( 5 )
{
case 0: Say("Welcome To Dream Play"); break;
case 1: Say("Need Any Help Please Page Staff"); break;
case 2: Say("Please Vist Our Web Site For More Information"); break;
case 3: Say("Wanna Become Staff Here Please Vist Our Web Site"); break;
case 4: Say("I Really Hope You Enjoy THis Shard"); break;
};
m_NextTalk = (DateTime.Now + TimeSpan.FromSeconds( 10 ));
}
}
[Constructable]
public Banker() : base( "the banker" )
{
}
public override void InitSBInfo()
{
m_SBInfos.Add( new SBBanker() );
}
public static int GetBalance( Mobile from )
{
Item[] gold, checks;
return GetBalance( from, out gold, out checks );
}
public static int GetBalance( Mobile from, out Item[] gold, out Item[] checks )
{
int balance = 0;
Container bank = from.BankBox;
if ( bank != null )
{
gold = bank.FindItemsByType( typeof( Gold ) );
checks = bank.FindItemsByType( typeof( BankCheck ) );
for ( int i = 0; i < gold.Length; ++i )
balance += gold[i].Amount;
for ( int i = 0; i < checks.Length; ++i )
balance += ((BankCheck)checks[i]).Worth;
}
else
{
gold = checks = new Item[0];
}
return balance;
}
public static bool Withdraw( Mobile from, int amount )
{
Item[] gold, checks;
int balance = GetBalance( from, out gold, out checks );
if ( balance < amount )
return false;
for ( int i = 0; amount > 0 && i < gold.Length; ++i )
{
if ( gold[i].Amount <= amount )
{
amount -= gold[i].Amount;
gold[i].Delete();
}
else
{
gold[i].Amount -= amount;
amount = 0;
}
}
for ( int i = 0; amount > 0 && i < checks.Length; ++i )
{
BankCheck check = (BankCheck)checks[i];
if ( check.Worth <= amount )
{
amount -= check.Worth;
check.Delete();
}
else
{
check.Worth -= amount;
amount = 0;
}
}
return true;
}
public static bool Deposit( Mobile from, int amount )
{
BankBox box = from.BankBox;
if ( box == null )
return false;
ArrayList items = new ArrayList();
while ( amount > 0 )
{
Item item;
if ( amount < 5000 )
{
item = new Gold( amount );
amount = 0;
}
else if ( amount <= 1000000 )
{
item = new BankCheck( amount );
amount = 0;
}
else
{
item = new BankCheck( 1000000 );
amount -= 1000000;
}
if ( box.TryDropItem( from, item, false ) )
{
items.Add( item );
}
else
{
item.Delete();
foreach ( Item curItem in items )
{
curItem.Delete();
}
return false;
}
}
return true;
}
public static int DepositUpTo( Mobile from, int amount )
{
BankBox box = from.BankBox;
if ( box == null )
return 0;
int amountLeft = amount;
while ( amountLeft > 0 )
{
Item item;
int amountGiven;
if ( amountLeft < 5000 )
{
item = new Gold( amountLeft );
amountGiven = amountLeft;
}
else if ( amountLeft <= 1000000 )
{
item = new BankCheck( amountLeft );
amountGiven = amountLeft;
}
else
{
item = new BankCheck( 1000000 );
amountGiven = 1000000;
}
if ( box.TryDropItem( from, item, false ) )
{
amountLeft -= amountGiven;
}
else
{
item.Delete();
break;
}
}
return amount - amountLeft;
}
public static void Deposit( Container cont, int amount )
{
while ( amount > 0 )
{
Item item;
if ( amount < 5000 )
{
item = new Gold( amount );
amount = 0;
}
else if ( amount <= 1000000 )
{
item = new BankCheck( amount );
amount = 0;
}
else
{
item = new BankCheck( 1000000 );
amount -= 1000000;
}
cont.DropItem( item );
}
}
public Banker( Serial serial ) : base( serial )
{
}
public override bool HandlesOnSpeech( Mobile from )
{
if ( from.InRange( this.Location, 12 ) )
return true;
return base.HandlesOnSpeech( from );
}
public override void OnSpeech( SpeechEventArgs e )
{
if ( !e.Handled && e.Mobile.InRange( this.Location, 12 ) )
{
for ( int i = 0; i < e.Keywords.Length; ++i )
{
int keyword = e.Keywords[i];
switch ( keyword )
{
case 0x0000: // *withdraw*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
string[] split = e.Speech.Split( ' ' );
if ( split.Length >= 2 )
{
int amount;
try
{
amount = Convert.ToInt32( split[1] );
}
catch
{
break;
}
if ( amount > 5000 )
{
this.Say( 500381 ); // Thou canst not withdraw so much at one time!
}
else if ( amount > 0 )
{
BankBox box = e.Mobile.BankBox;
if ( box == null || !box.ConsumeTotal( typeof( Gold ), amount ) )
{
this.Say( 500384 ); // Ah, art thou trying to fool me? Thou hast not so much gold!
}
else
{
e.Mobile.AddToBackpack( new Gold( amount ) );
this.Say( 1010005 ); // Thou hast withdrawn gold from thy account.
}
}
}
break;
}
case 0x0001: // *balance*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
BankBox box = e.Mobile.BankBox;
if ( box != null )
{
this.Say( 1042759, box.TotalGold.ToString() ); // Thy current bank balance is ~1_AMOUNT~ gold.
}
break;
}
case 0x0002: // *bank*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500378 ); // Thou art a criminal and cannot access thy bank box.
break;
}
BankBox box = e.Mobile.BankBox;
if ( box != null )
box.Open();
break;
}
case 0x0003: // *check*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
string[] split = e.Speech.Split( ' ' );
if ( split.Length >= 2 )
{
int amount;
try
{
amount = Convert.ToInt32( split[1] );
}
catch
{
break;
}
if ( amount < 5000 )
{
this.Say( 1010006 ); // We cannot create checks for such a paltry amount of gold!
}
else if ( amount > 1000000 )
{
this.Say( 1010007 ); // Our policies prevent us from creating checks worth that much!
}
else
{
BankCheck check = new BankCheck( amount );
BankBox box = e.Mobile.BankBox;
if ( box == null || !box.TryDropItem( e.Mobile, check, false ) )
{
this.Say( 500386 ); // There's not enough room in your bankbox for the check!
check.Delete();
}
else if ( !box.ConsumeTotal( typeof( Gold ), amount ) )
{
this.Say( 500384 ); // Ah, art thou trying to fool me? Thou hast not so much gold!
check.Delete();
}
else
{
this.Say( 1042673, AffixType.Append, amount.ToString(), "" ); // Into your bank box I have placed a check in the amount of:
}
}
}
break;
}
}
}
}
base.OnSpeech( e );
}
public override void AddCustomContextEntries( Mobile from, ArrayList list )
{
if ( from.Alive )
list.Add( new OpenBankEntry( from, this ) );
base.AddCustomContextEntries( from, list );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if ( DateTime.Now >= m_NextTalk && InRange( m, 5 ) && InLOS( m ) )
{
switch ( Utility.Random( 5 )
{
case 0: Say("Welcome To Dream Play"); break;
case 1: Say("Need Any Help Please Page Staff"); break;
case 2: Say("Please Vist Our Web Site For More Information"); break;
case 3: Say("Wanna Become Staff Here Please Vist Our Web Site"); break;
case 4: Say("I Really Hope You Enjoy THis Shard"); break;
};
m_NextTalk = (DateTime.Now + TimeSpan.FromSeconds( 10 ));
}
}
[Constructable]
public Banker() : base( "the banker" )
{
}
switch ( Utility.Random( 5 )
switch ( Utility.Random( 5 ) )
using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
public class Banker : BaseVendor
{
private ArrayList m_SBInfos = new ArrayList();
protected override ArrayList SBInfos{ get { return m_SBInfos; } }
public override NpcGuild NpcGuild{ get{ return NpcGuild.MerchantsGuild; } }
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if ( DateTime.Now >= m_NextTalk && InRange( m, 5 ) && InLOS( m ) )
{
switch ( Utility.Random( 5 )
{
case 0: Say("Welcome To Dream Play"); break;
case 1: Say("Need Any Help Please Page Staff"); break;
case 2: Say("Please Vist Our Web Site For More Information"); break;
case 3: Say("Wanna Become Staff Here Please Vist Our Web Site"); break;
case 4: Say("I Really Hope You Enjoy THis Shard"); break;
};
m_NextTalk = (DateTime.Now + TimeSpan.FromSeconds( 10 ));
}
}
[Constructable]
public Banker() : base( "the banker" )
{
}
public override void InitSBInfo()
{
m_SBInfos.Add( new SBBanker() );
}
public static int GetBalance( Mobile from )
{
Item[] gold, checks;
return GetBalance( from, out gold, out checks );
}
public static int GetBalance( Mobile from, out Item[] gold, out Item[] checks )
{
int balance = 0;
Container bank = from.BankBox;
if ( bank != null )
{
gold = bank.FindItemsByType( typeof( Gold ) );
checks = bank.FindItemsByType( typeof( BankCheck ) );
for ( int i = 0; i < gold.Length; ++i )
balance += gold[i].Amount;
for ( int i = 0; i < checks.Length; ++i )
balance += ((BankCheck)checks[i]).Worth;
}
else
{
gold = checks = new Item[0];
}
return balance;
}
public static bool Withdraw( Mobile from, int amount )
{
Item[] gold, checks;
int balance = GetBalance( from, out gold, out checks );
if ( balance < amount )
return false;
for ( int i = 0; amount > 0 && i < gold.Length; ++i )
{
if ( gold[i].Amount <= amount )
{
amount -= gold[i].Amount;
gold[i].Delete();
}
else
{
gold[i].Amount -= amount;
amount = 0;
}
}
for ( int i = 0; amount > 0 && i < checks.Length; ++i )
{
BankCheck check = (BankCheck)checks[i];
if ( check.Worth <= amount )
{
amount -= check.Worth;
check.Delete();
}
else
{
check.Worth -= amount;
amount = 0;
}
}
return true;
}
public static bool Deposit( Mobile from, int amount )
{
BankBox box = from.BankBox;
if ( box == null )
return false;
ArrayList items = new ArrayList();
while ( amount > 0 )
{
Item item;
if ( amount < 5000 )
{
item = new Gold( amount );
amount = 0;
}
else if ( amount <= 1000000 )
{
item = new BankCheck( amount );
amount = 0;
}
else
{
item = new BankCheck( 1000000 );
amount -= 1000000;
}
if ( box.TryDropItem( from, item, false ) )
{
items.Add( item );
}
else
{
item.Delete();
foreach ( Item curItem in items )
{
curItem.Delete();
}
return false;
}
}
return true;
}
public static int DepositUpTo( Mobile from, int amount )
{
BankBox box = from.BankBox;
if ( box == null )
return 0;
int amountLeft = amount;
while ( amountLeft > 0 )
{
Item item;
int amountGiven;
if ( amountLeft < 5000 )
{
item = new Gold( amountLeft );
amountGiven = amountLeft;
}
else if ( amountLeft <= 1000000 )
{
item = new BankCheck( amountLeft );
amountGiven = amountLeft;
}
else
{
item = new BankCheck( 1000000 );
amountGiven = 1000000;
}
if ( box.TryDropItem( from, item, false ) )
{
amountLeft -= amountGiven;
}
else
{
item.Delete();
break;
}
}
return amount - amountLeft;
}
public static void Deposit( Container cont, int amount )
{
while ( amount > 0 )
{
Item item;
if ( amount < 5000 )
{
item = new Gold( amount );
amount = 0;
}
else if ( amount <= 1000000 )
{
item = new BankCheck( amount );
amount = 0;
}
else
{
item = new BankCheck( 1000000 );
amount -= 1000000;
}
cont.DropItem( item );
}
}
public Banker( Serial serial ) : base( serial )
{
}
public override bool HandlesOnSpeech( Mobile from )
{
if ( from.InRange( this.Location, 12 ) )
return true;
return base.HandlesOnSpeech( from );
}
public override void OnSpeech( SpeechEventArgs e )
{
if ( !e.Handled && e.Mobile.InRange( this.Location, 12 ) )
{
for ( int i = 0; i < e.Keywords.Length; ++i )
{
int keyword = e.Keywords[i];
switch ( keyword )
{
case 0x0000: // *withdraw*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
string[] split = e.Speech.Split( ' ' );
if ( split.Length >= 2 )
{
int amount;
try
{
amount = Convert.ToInt32( split[1] );
}
catch
{
break;
}
if ( amount > 5000 )
{
this.Say( 500381 ); // Thou canst not withdraw so much at one time!
}
else if ( amount > 0 )
{
BankBox box = e.Mobile.BankBox;
if ( box == null || !box.ConsumeTotal( typeof( Gold ), amount ) )
{
this.Say( 500384 ); // Ah, art thou trying to fool me? Thou hast not so much gold!
}
else
{
e.Mobile.AddToBackpack( new Gold( amount ) );
this.Say( 1010005 ); // Thou hast withdrawn gold from thy account.
}
}
}
break;
}
case 0x0001: // *balance*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
BankBox box = e.Mobile.BankBox;
if ( box != null )
{
this.Say( 1042759, box.TotalGold.ToString() ); // Thy current bank balance is ~1_AMOUNT~ gold.
}
break;
}
case 0x0002: // *bank*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500378 ); // Thou art a criminal and cannot access thy bank box.
break;
}
BankBox box = e.Mobile.BankBox;
if ( box != null )
box.Open();
break;
}
case 0x0003: // *check*
{
e.Handled = true;
if ( e.Mobile.Criminal )
{
this.Say( 500389 ); // I will not do business with a criminal!
break;
}
string[] split = e.Speech.Split( ' ' );
if ( split.Length >= 2 )
{
int amount;
try
{
amount = Convert.ToInt32( split[1] );
}
catch
{
break;
}
if ( amount < 5000 )
{
this.Say( 1010006 ); // We cannot create checks for such a paltry amount of gold!
}
else if ( amount > 1000000 )
{
this.Say( 1010007 ); // Our policies prevent us from creating checks worth that much!
}
else
{
BankCheck check = new BankCheck( amount );
BankBox box = e.Mobile.BankBox;
if ( box == null || !box.TryDropItem( e.Mobile, check, false ) )
{
this.Say( 500386 ); // There's not enough room in your bankbox for the check!
check.Delete();
}
else if ( !box.ConsumeTotal( typeof( Gold ), amount ) )
{
this.Say( 500384 ); // Ah, art thou trying to fool me? Thou hast not so much gold!
check.Delete();
}
else
{
this.Say( 1042673, AffixType.Append, amount.ToString(), "" ); // Into your bank box I have placed a check in the amount of:
}
}
}
break;
}
}
}
}
base.OnSpeech( e );
}
public override void AddCustomContextEntries( Mobile from, ArrayList list )
{
if ( from.Alive )
list.Add( new OpenBankEntry( from, this ) );
base.AddCustomContextEntries( from, list );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}
The code I posted in post #45 has been tested and works perfectly.asmir03 said:srry but they is one more error and i check 2 times to see whats wrong and i can't find it can someone plz help me