| CODE |
//Pancarte de location automatique de maison. //Fait par Shariz //La Pancarte1 clône la pancarte principale. En cliquant dessus vous avez acces à la pancarte de base. using System; using Server; using Server.Multis; using Server.Gumps; using Server.Items; using Server.Network; using Server.Mobiles; using Server.Targeting; namespace Server.Items { public class Pancarte : Item { public Mobile i_proprio; public Mobile i_locataire; public int i_Acheter = 100000; public int i_Loyer = 15000; public bool i_Location = false; public DateTime i_Date = DateTime.Now; public DateTime i_DateLocataire; public int i_Argent = 0; public int i_ArgentAdmin = 0; private Point3D i_pointA; private Point3D i_pointB; private Mobile m; [Constructable] public Pancarte() : base( 0xBD2 ) { Name = "Maison à vendre"; Movable = false; } public Pancarte( Serial serial ) : base( serial ) { } [CommandProperty( AccessLevel.GameMaster )] public Point3D pointA { get { return i_pointA; } set { i_pointA = value; } } [CommandProperty( AccessLevel.GameMaster )] public Point3D pointB { get { return i_pointB; } set { i_pointB = value; } } [CommandProperty( AccessLevel.GameMaster )] public Mobile Proprio { get { return i_proprio; } set { i_proprio = value; } } [CommandProperty( AccessLevel.GameMaster )] public Mobile Locataire { get { return i_locataire; } set { i_locataire = value; } } [CommandProperty( AccessLevel.GameMaster )] public int Acheter { get {return i_Acheter;} set {i_Acheter = value;} } [CommandProperty( AccessLevel.GameMaster )] public int Loyer { get {return i_Loyer;} set {i_Loyer = value;} } [CommandProperty( AccessLevel.GameMaster )] public bool Location { get {return i_Location;} set {i_Location = value;} } [CommandProperty( AccessLevel.GameMaster )] public DateTime DateProprietaire { get {return i_Date;} set {i_Date = value;} } [CommandProperty( AccessLevel.GameMaster )] public DateTime DateLocataire { get {return i_DateLocataire;} set {i_DateLocataire = value;} } [CommandProperty( AccessLevel.GameMaster )] public int Argent { get {return i_Argent;} set {i_Argent = value;} } [CommandProperty( AccessLevel.GameMaster )] public int ArgentAdmin { get {return i_ArgentAdmin;} set {i_ArgentAdmin = value;} } public override void OnDoubleClick( Mobile m ) { if (i_Date < DateTime.Now) { i_proprio = null; i_locataire = null; Name = "Maison à vendre"; } if (i_Location == true && i_DateLocataire < DateTime.Now) { i_locataire = null; Name = "Maison à Louer"; } if (i_proprio == null && m.AccessLevel < AccessLevel.GameMaster) { m.SendGump(new AcheterGump(m, this)); } if (i_locataire == null && i_Location == true && i_proprio != null && i_proprio != m) { m.SendGump(new LoyerGump(m, this)); } if (i_proprio == m || i_locataire == m || m.AccessLevel >= AccessLevel.GameMaster) { m.SendGump(new PancarteGump(m, this)); m.SendSound(0xED); } if ( i_proprio != m && i_locataire != m ) { if (i_proprio != null) { m.SendMessage("Le propriétaire : {0}", i_proprio.Name); } if (i_locataire != null) { m.SendMessage("Le locataire : {0}", i_locataire.Name); } } } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 1 ); // version writer.Write((Point3D) i_pointA); writer.Write((Point3D) i_pointB); writer.Write((Mobile) i_proprio); writer.Write((Mobile) i_locataire); writer.Write((int) i_Acheter); writer.Write((int) i_Loyer); writer.Write((bool) i_Location); writer.Write((DateTime) i_Date); writer.Write((DateTime) i_DateLocataire); writer.Write((int) i_Argent); writer.Write((int) i_ArgentAdmin); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 1: { i_pointA = reader.ReadPoint3D(); i_pointB = reader.ReadPoint3D(); goto case 0; } case 0: { i_proprio = reader.ReadMobile(); i_locataire = reader.ReadMobile(); i_Acheter = reader.ReadInt(); i_Loyer = reader.ReadInt(); i_Location = reader.ReadBool(); i_Date = reader.ReadDateTime(); i_DateLocataire = reader.ReadDateTime(); i_Argent = reader.ReadInt(); i_ArgentAdmin = reader.ReadInt(); break; } } } } public class PancarteGump : Gump { private Pancarte item; public PancarteGump(Mobile from, Pancarte pancarte) : base (20, 30) { Mobile mobile = from; item = pancarte; AddPage(0); AddBackground( 0, 0, 400, 350, 5054); // ( 0,0 Nbre point1 par rapport au gump / 260,350 longueur/hauteur. / image du gump ) AddLabel(15, 10, 3, "Ecran de gestion des habitations."); if (from is PlayerMobile) { PlayerMobile m = (PlayerMobile)from; // Propriétaire if (item.i_proprio == m) { AddButton( 15, 250, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0); AddLabel(50, 250, 0x34, "Choisir un nouveau locataire."); if (item.i_Location == false) { AddButton( 15, 275, 0xFB7, 0xFB9, 8, GumpButtonType.Reply, 0); AddLabel(50, 275, 0x34, "Autoriser la location automatique."); } else { AddButton( 15, 275, 0xFB7, 0xFB9, 9, GumpButtonType.Reply, 0); AddLabel(50, 275, 0x34, "Interdire la location automatique. (supprimer locataire)"); } AddButton( 15, 175, 0xFB7, 0xFB9, 11, GumpButtonType.Reply, 0); AddLabel(50, 175, 0x34, "Payer le bâtiment."); AddButton( 15, 300, 0xFB7, 0xFB9, 10, GumpButtonType.Reply, 0); AddLabel(50, 300, 0x34, "Récupérer l'argent."); } AddButton( 15, 50, 0xFB7, 0xFB9, 2, GumpButtonType.Reply, 0); AddLabel(50, 50, 0x34, "Changer le nom de la pancarte."); AddButton( 15, 75, 0xFB7, 0xFB9, 3, GumpButtonType.Reply, 0); AddLabel(50, 75, 0x34, "Acceder à la banque."); AddButton( 15, 100, 0xFB7, 0xFB9, 4, GumpButtonType.Reply, 0); AddLabel(50, 100, 0x34, "Locker un objet."); AddButton( 15, 125, 0xFB7, 0xFB9, 5, GumpButtonType.Reply, 0); AddLabel(50, 125, 0x34, "Délocker un objet."); AddButton( 15, 150, 0xFB7, 0xFB9, 6, GumpButtonType.Reply, 0); AddLabel(50, 150, 0x34, "Changer la pancarte."); if (item.i_proprio != m) { AddButton( 15, 175, 0xFB7, 0xFB9, 7, GumpButtonType.Reply, 0); AddLabel(50, 175, 0x34, "Payer un loyer."); } } } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; if( from is PlayerMobile ) { PlayerMobile m = ( PlayerMobile ) from; switch ( info.ButtonID ) { case 1: { m.Target = new ProprioTarget(item); break; } case 2: { m.SendGump(new RenommerGump(from, item)); break; } case 3: { m.BankBox.Open(); break; } case 4: { m.Target = new LockerTarget(item); break; } case 5: { m.Target = new DeLockerTarget(item); break; } case 6: { m.SendGump( new NouvellePancarteGump(from, item)); break; } case 7: { m.SendGump(new PayerGump(from, item)); break; } case 8: { item.i_Location = true; break; } case 9: { item.i_Location = false; item.i_locataire = null; break; } case 10: { if (item.i_Argent > 0) { m.BankBox.DropItem( new Gold(item.i_Argent) ); m.SendSound(0x2E3); m.SendMessage("Vous avez récuperer {0} pièces d'or.", item.i_Argent); item.i_Argent = 0; } else { m.SendMessage("Il n'y a pas d'or!"); m.SendSound(0x1F0); } break; } case 11: { m.SendGump( new PayerAchatGump(from, item)); break; } break; } } } } public class ProprioTarget : Target { Pancarte pancarte; public ProprioTarget(Pancarte i_Pancarte) : base( 5, false, TargetFlags.None) // base(Nbre de case, peut target le sol, bheu) { pancarte = i_Pancarte; } protected override void OnTarget( Mobile from, object targ ) { PlayerMobile m = (PlayerMobile)from; if (targ is Mobile && targ != m) { PlayerMobile cible = (PlayerMobile)targ; if (cible == pancarte.i_locataire) { m.SendMessage("la cible est déjà locataire des lieux"); } else if (pancarte.i_locataire == null) { pancarte.i_locataire = cible; pancarte.i_Location = false; m.SendMessage("le nouveau locataire est : {0}", cible.Name); cible.SendMessage("Vous êtes locataire"); } else { m.SendMessage(" il y a déjà un locataire."); m.SendMessage("Pour supprimer le locataire, ciblez la pancarte."); } } else if (targ == pancarte) { if (pancarte.i_DateLocataire < DateTime.Now) { pancarte.i_locataire = null; m.SendMessage("Locataire supprimer!"); } else { m.SendGump(new EffaceLocataireGump(from, pancarte)); } } else if ( targ is Mobile && targ == m) { m.SendMessage("Vous ne pouvez pas vous cibler!"); } else { m.SendMessage("Vous devez cibler un joueur ou votre pancarte!"); } } } public class EffaceLocataireGump : Gump { private Pancarte item; public EffaceLocataireGump(Mobile from, Pancarte pancarte) : base(20, 30) { Mobile mobile = from; item = pancarte; AddPage(0); AddBackground(0, 0, 50, 100, 5054); AddLabel(25, 10, 0x480, "Le bâtiment est louer par" + item.i_locataire + "jusqu'au : " + item.i_DateLocataire); AddLabel(25, 30, 0x480, "Voulez-vous vraiment supprimer ce locataire?"); AddButton(25, 50, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0); AddLabel(60, 50, 0x480, "Valider"); } public override void OnResponse(NetState state, RelayInfo info) { Mobile from = state.Mobile; if (from is PlayerMobile) { PlayerMobile m = (PlayerMobile)from; TextRelay text = info.GetTextEntry( 1 ); switch ( info.ButtonID ) { case 1: { item.i_locataire = null; m.SendMessage("Locataire supprimer!"); break; } } } } } public class RenommerGump : Gump { private Pancarte item; private string i_Nom; public RenommerGump(Mobile from, Pancarte pancarte) : base (20, 30) { Mobile mobile = from; item = pancarte; AddPage(0); AddBackground( 0, 0, 350, 100, 5054); AddLabel(25, 10, 0x480, "Renommer la pancarte."); //AddImage(25, 40, 0x16C); AddTextEntry( 25, 40, 300, 65, 0x480, 1, string.Empty); AddButton( 25, 70, 0xFB7, 0xFB9, 2, GumpButtonType.Reply, 0); AddLabel(60, 70, 0x480, "Valider"); } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; if( from is PlayerMobile ) { PlayerMobile m = ( PlayerMobile ) from; TextRelay text = info.GetTextEntry( 1 ); switch ( info.ButtonID ) { case 1: { if (text != null) { i_Nom = "text.Text"; item.Name = i_Nom; //m.SendMessage("Le nouveau nom est : {0}", item.Name); } break; } case 2: { item.Name = text.Text; m.SendMessage("le nouveau nom est : {0}", item.Name); break; } } } } } public class LockerTarget : Target { Pancarte pancarte; public LockerTarget(Pancarte i_Pancarte) : base( 8, false, TargetFlags.None) // base(Nbre de case, peut target le sol, bheu) { pancarte = i_Pancarte; } protected override void OnTarget( Mobile from, object targ ) { PlayerMobile m = (PlayerMobile)from; if (targ is Mobile && targ != m) { m.SendMessage("Vous ne pouvez pas locker un personnage!"); } else if (targ == pancarte || targ is Pancarte) { m.SendMessage("Vous ne pouvez pas locker la pancarte!"); } else if ( targ is Mobile && targ == m) { m.SendMessage("Vous ne pouvez pas vous cibler!"); } else if (targ is Item) { Item i_cible = (Item)targ; if ( ( pancarte.pointA.X < i_cible.Location.X ) && ( i_cible.Location.X < pancarte.pointB.X ) && ( pancarte.pointA.Y < i_cible.Location.Y ) && ( i_cible.Location.Y < pancarte.pointB.Y ) ) { string nom = i_cible.Name; i_cible.Movable = false; i_cible.Name = nom + " locker par :" + m.Name; } else { m.SendMessage("Vous devez cibler un objet qui se trouve dans le batiment!"); } } else { m.SendMessage("Vous devez cibler un objet!"); } } } public class DeLockerTarget : Target { Pancarte pancarte; public DeLockerTarget(Pancarte i_Pancarte) : base( 8, false, TargetFlags.None) // base(Nbre de case, peut target le sol, bheu) { pancarte = i_Pancarte; } protected override void OnTarget( Mobile from, object targ ) { PlayerMobile m = (PlayerMobile)from; if (targ is Mobile && targ != m) { m.SendMessage("Vous ne pouvez pas délocker un personnage!"); } else if (targ == pancarte || targ is Pancarte) { m.SendMessage("Vous ne pouvez pas délocker la pancarte!"); } else if ( targ is Mobile && targ == m) { m.SendMessage("Vous ne pouvez pas vous cibler!"); } else if (targ is Item) { Item i_cible = (Item)targ; if ( ( pancarte.pointA.X < i_cible.Location.X ) && ( i_cible.Location.X < pancarte.pointB.X ) && ( pancarte.pointA.Y < i_cible.Location.Y ) && ( i_cible.Location.Y < pancarte.pointB.Y ) ) { string nom = i_cible.Name; i_cible.Movable = true; i_cible.Name = nom + " Délocker par :" + m.Name; } else { m.SendMessage("Vous devez cibler un objet qui se trouve dans le batiment!"); } } else { m.SendMessage("Vous devez cibler un objet!"); } } } public class NouvellePancarteGump : Gump { private Pancarte item; public NouvellePancarteGump(Mobile from, Pancarte pancarte) : base (20, 30) { Mobile mobile = from; item = pancarte; //(Pancarte)pancarte; AddPage(0); AddBackground( 0, 0, 500, 450, 5054); AddLabel(25, 10, 0x480, "Changer la pancarte."); //AddImageTiled(100, 100, 50, 50, 1358); AddImageTiled( 245, 40, 5, 370, 0x52 ); AddButton( 25, 40, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0); AddLabel(60, 40, 0x480,"Cuivre"); AddButton( 135, 40, 0xFB7, 0xFB9, 2, GumpButtonType.Reply, 0); AddLabel(170, 40, 0x480, "Cuivre"); AddButton( 25, 60, 0xFB7, 0xFB9, 3, GumpButtonType.Reply, 0); AddLabel(60, 60, 0x480,"Bois"); AddButton( 135, 60, 0xFB7, 0xFB9, 4, GumpButtonType.Reply, 0); AddLabel(170, 60, 0x480, "Bois"); AddButton( 25, 80, 0xFB7, 0xFB9, 5, GumpButtonType.Reply, 0); AddLabel(60, 80, 0x480,"Librairie"); AddButton( 135, 80, 0xFB7, 0xFB9, 6, GumpButtonType.Reply, 0); AddLabel(170, 80, 0x480, "Librairie"); AddButton( 25, 100, 0xFB7, 0xFB9, 7, GumpButtonType.Reply, 0); AddLabel(60, 100, 0x480,"Boulangerie"); AddButton( 135, 100, 0xFB7, 0xFB9, 8, GumpButtonType.Reply, 0); AddLabel(170, 100, 0x480, "Boulangerie"); AddButton( 25, 120, 0xFB7, 0xFB9, 9, GumpButtonType.Reply, 0); AddLabel(60, 120, 0x480,"Tailleur"); AddButton( 135, 120, 0xFB7, 0xFB9, 10, GumpButtonType.Reply, 0); AddLabel(170, 120, 0x480, "Tailleur"); AddButton( 25, 140, 0xFB7, 0xFB9, 11, GumpButtonType.Reply, 0); AddLabel(60, 140, 0x480,"Bricoleur"); AddButton( 135, 140, 0xFB7, 0xFB9, 12, GumpButtonType.Reply, 0); AddLabel(170, 140, 0x480, "Bricoleur"); AddButton( 25, 160, 0xFB7, 0xFB9, 13, GumpButtonType.Reply, 0); AddLabel(60, 160, 0x480,"Boucherie"); AddButton( 135, 160, 0xFB7, 0xFB9, 14, GumpButtonType.Reply, 0); AddLabel(170, 160, 0x480, "Boucherie"); AddButton( 25, 180, 0xFB7, 0xFB9, 15, GumpButtonType.Reply, 0); AddLabel(60, 180, 0x480,"Dispensaire"); AddButton( 135, 180, 0xFB7, 0xFB9, 16, GumpButtonType.Reply, 0); AddLabel(170, 180, 0x480, "Dispensaire"); AddButton( 25, 200, 0xFB7, 0xFB9, 17, GumpButtonType.Reply, 0); AddLabel(60, 200, 0x480,"Mage"); AddButton( 135, 200, 0xFB7, 0xFB9, 18, GumpButtonType.Reply, 0); AddLabel(170, 200, 0x480, "Mage"); AddButton( 25, 220, 0xFB7, 0xFB9, 19, GumpButtonType.Reply, 0); AddLabel(60, 220, 0x480,"Menuiserie"); AddButton( 135, 220, 0xFB7, 0xFB9, 20, GumpButtonType.Reply, 0); AddLabel(170, 220, 0x480, "Menuiserie"); AddButton( 25, 240, 0xFB7, 0xFB9, 21, GumpButtonType.Reply, 0); AddLabel(60, 240, 0x480,"Douane"); AddButton( 135, 240, 0xFB7, 0xFB9, 22, GumpButtonType.Reply, 0); AddLabel(170, 240, 0x480, "Douane"); AddButton( 25, 260, 0xFB7, 0xFB9, 23, GumpButtonType.Reply, 0); AddLabel(60, 260, 0x480,"Auberge"); AddButton( 135, 260, 0xFB7, 0xFB9, 24, GumpButtonType.Reply, 0); AddLabel(170, 260, 0x480, "Auberge"); AddButton( 25, 280, 0xFB7, 0xFB9, 25, GumpButtonType.Reply, 0); AddLabel(60, 280, 0x480,"Navire"); AddButton( 135, 280, 0xFB7, 0xFB9, 26, GumpButtonType.Reply, 0); AddLabel(170, 280, 0x480, "Navire"); AddButton( 25, 300, 0xFB7, 0xFB9, 27, GumpButtonType.Reply, 0); AddLabel(60, 300, 0x480,"Etable"); AddButton( 135, 300, 0xFB7, 0xFB9, 28, GumpButtonType.Reply, 0); AddLabel(170, 300, 0x480, "Etable"); AddButton( 25, 320, 0xFB7, 0xFB9, 29, GumpButtonType.Reply, 0); AddLabel(60, 320, 0x480,"Barbier"); AddButton( 135, 320, 0xFB7, 0xFB9, 30, GumpButtonType.Reply, 0); AddLabel(170, 320, 0x480, "Barbier"); AddButton( 25, 340, 0xFB7, 0xFB9, 31, GumpButtonType.Reply, 0); AddLabel(60, 340, 0x480,"Barde"); AddButton( 135, 340, 0xFB7, 0xFB9, 32, GumpButtonType.Reply, 0); AddLabel(170, 340, 0x480, "Barde"); AddButton( 25, 360, 0xFB7, 0xFB9, 33, GumpButtonType.Reply, 0); AddLabel(60, 360, 0x480,"Archerie"); AddButton( 135, 360, 0xFB7, 0xFB9, 34, GumpButtonType.Reply, 0); AddLabel(170, 360, 0x480, "Archerie"); AddButton( 25, 380, 0xFB7, 0xFB9, 35, GumpButtonType.Reply, 0); AddLabel(60, 380, 0x480,"Armurier"); AddButton( 135, 380, 0xFB7, 0xFB9, 36, GumpButtonType.Reply, 0); AddLabel(170, 380, 0x480, "Armurier"); AddButton( 25, 400, 0xFB7, 0xFB9, 37, GumpButtonType.Reply, 0); AddLabel(60, 400, 0x480,"Bijoutier"); AddButton( 135, 400, 0xFB7, 0xFB9, 38, GumpButtonType.Reply, 0); AddLabel(170, 400, 0x480, "Bijoutier"); ////////////////////////////////////////////////////////////// AddButton( 270, 40, 0xFB7, 0xFB9, 39, GumpButtonType.Reply, 0); AddLabel(305, 40, 0x480,"Taverne"); AddButton( 380, 40, 0xFB7, 0xFB9, 40, GumpButtonType.Reply, 0); AddLabel(415, 40, 0x480, "Taverne"); AddButton( 270, 60, 0xFB7, 0xFB9, 41, GumpButtonType.Reply, 0); AddLabel(305, 60, 0x480,"Herboriste"); AddButton( 380, 60, 0xFB7, 0xFB9, 42, GumpButtonType.Reply, 0); AddLabel(415, 60, 0x480, "Herboriste"); AddButton( 270, 80, 0xFB7, 0xFB9, 43, GumpButtonType.Reply, 0); AddLabel(305, 80, 0x480,"Forge"); AddButton( 380, 80, 0xFB7, 0xFB9, 44, GumpButtonType.Reply, 0); AddLabel(415, 80, 0x480, "Forge"); AddButton( 270, 100, 0xFB7, 0xFB9, 45, GumpButtonType.Reply, 0); AddLabel(305, 100, 0x480,"Art"); AddButton( 380, 100, 0xFB7, 0xFB9, 46, GumpButtonType.Reply, 0); AddLabel(415, 100, 0x480, "Art"); AddButton( 270, 120, 0xFB7, 0xFB9, 47, GumpButtonType.Reply, 0); AddLabel(305, 120, 0x480,"Provision"); AddButton( 380, 120, 0xFB7, 0xFB9, 48, GumpButtonType.Reply, 0); AddLabel(415, 120, 0x480, "Provision"); AddButton( 270, 140, 0xFB7, 0xFB9, 49, GumpButtonType.Reply, 0); AddLabel(305, 140, 0x480,"Archerie"); AddButton( 380, 140, 0xFB7, 0xFB9, 50, GumpButtonType.Reply, 0); AddLabel(415, 140, 0x480, "Archerie"); AddButton( 270, 160, 0xFB7, 0xFB9, 51, GumpButtonType.Reply, 0); AddLabel(305, 160, 0x480,"Banque"); AddButton( 380, 160, 0xFB7, 0xFB9, 52, GumpButtonType.Reply, 0); AddLabel(415, 160, 0x480, "Banque"); AddButton( 270, 180, 0xFB7, 0xFB9, 53, GumpButtonType.Reply, 0); AddLabel(305, 180, 0x480,"Théatre"); AddButton( 380, 180, 0xFB7, 0xFB9, 54, GumpButtonType.Reply, 0); AddLabel(415, 180, 0x480, "Théatre"); AddButton( 270, 200, 0xFB7, 0xFB9, 55, GumpButtonType.Reply, 0); AddLabel(305, 200, 0x480,"Ruche"); AddButton( 380, 200, 0xFB7, 0xFB9, 56, GumpButtonType.Reply, 0); AddLabel(415, 200, 0x480, "Ruche"); } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; if( from is PlayerMobile ) { PlayerMobile m = ( PlayerMobile ) from; TextRelay text = info.GetTextEntry( 1 ); switch ( info.ButtonID ) { case 1: { item.ItemID = 3025; break; } case 2: { item.ItemID = 3026; break; } case 3: { item.ItemID = 3023; break; } case 4: { item.ItemID = 3024; break; } case 5: { item.ItemID = 2965; break; } case 6: { item.ItemID = 2966; break; } case 7: { item.ItemID = 2979; break; } case 8: { item.ItemID = 2980; break; } case 9: { item.ItemID = 2981; break; } case 10: { item.ItemID = 2982; break; } case 11: { item.ItemID = 2983; break; } case 12: { item.ItemID = 2984; break; } case 13: { item.ItemID = 2985; break; } case 14: { item.ItemID = 2986; break; } case 15: { item.ItemID = 2987; break; } case 16: { item.ItemID = 2988; break; } case 17: { item.ItemID = 2989; break; } case 18: { item.ItemID = 2990; break; } case 19: { item.ItemID = 2991; break; } case 20: { item.ItemID = 2992; break; } case 21: { item.ItemID = 2993; break; } case 22: { item.ItemID = 2994; break; } case 23: { item.ItemID = 2995; break; } case 24: { item.ItemID = 2996; break; } case 25: { item.ItemID = 2997; break; } case 26: { item.ItemID = 2998; break; } case 27: { item.ItemID = 2999; break; } case 28: { item.ItemID = 3000; break; } case 29: { item.ItemID = 3001; break; } case 30: { item.ItemID = 3002; break; } case 31: { item.ItemID = 3003; break; } case 32: { item.ItemID = 3004; break; } case 33: { item.ItemID = 3005; break; } case 34: { item.ItemID = 3006; break; } case 35: { item.ItemID = 3007; break; } case 36: { item.ItemID = 3008; break; } case 37: { item.ItemID = 3009; break; } case 38: { item.ItemID = 3010; break; } //////////////////////////////////////////////////////////////////////// case 39: { item.ItemID = 3011; break; } case 40: { item.ItemID = 3012; break; } case 41: { item.ItemID = 3013; break; } case 42: { item.ItemID = 3014; break; } case 43: { item.ItemID = 3015; break; } case 44: { item.ItemID = 3016; break; } case 45: { item.ItemID = 3017; break; } case 46: { item.ItemID = 3018; break; } case 47: { item.ItemID = 3019; break; } case 48: { item.ItemID = 3020; break; } case 49: { item.ItemID = 3021; break; } case 50: { item.ItemID = 3022; break; } case 51: { item.ItemID = 3083; break; } case 52: { item.ItemID = 3084; break; } case 53: { item.ItemID = 3085; break; } case 54: { item.ItemID = 3086; break; } case 55: { item.ItemID = 3139; break; } case 56: { item.ItemID = 3140; break; } case 57: { item.ItemID = 3019; break; } case 58: { item.ItemID = 3020; break; } } } } } public class AcheterGump : Gump { private Pancarte item; private int Prix; public AcheterGump(Mobile from, Pancarte pancarte) : base (20, 30) { Mobile mobile = from; item = pancarte; Prix = item.i_Acheter; AddPage(0); AddBackground( 0, 0, 250, 100, 5054); AddLabel(25, 10, 0x480, "Acheter le bâtiment."); AddLabel(25, 30, 0x480, "Le prix est " + item.i_Acheter + " pièces d'or." ); AddButton( 25, 60, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0); AddLabel(65, 60, 0x34, "Acheter"); } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; if( from is PlayerMobile ) { PlayerMobile m = ( PlayerMobile ) from; TextRelay text = info.GetTextEntry( 1 ); switch ( info.ButtonID ) { case 1: { BankBox box = from.BankBox; int or = 0; if ( box != null) { Item[] po = box.FindItemsByType(typeof(Gold),true); for ( int i = 0; i < po.Length; ++i ) { or += po[i].Amount; } if ( or > Prix) { box.ConsumeTotal( typeof(Gold), Prix, true ); item.i_Date = DateTime.Now + TimeSpan.FromDays(60.0); item.i_proprio = from; item.i_ArgentAdmin += Prix; item.Name = "Maison à louer"; from.SendMessage("Le propriétaire est : {0}.", item.i_proprio.Name); from.SendMessage("Vous achetez le bâtiment pour 60 jours!"); from.SendMessage("Ce bâtiment vous appartient jusqu'au : {0}", item.i_Date); } else { from.SendMessage("Vous n'avez pas assez d'or dans votre coffre de banque."); } } break; } } } } } public class LoyerGump : Gump { private Pancarte item; private int Prix; public LoyerGump(Mobile from, Pancarte pancarte) : base (20, 30) { Mobile mobile = from; item = pancarte; Prix = item.i_Loyer; AddPage(0); AddBackground( 0, 0, 350, 100, 5054); AddLabel(25, 10, 0x480, "Louer le bâtiment."); AddLabel(25, 30, 0x480, "Le prix du loyer est " + item.i_Loyer + " pièces d'or par semaine." ); AddButton( 25, 60, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0); AddLabel(65, 60, 0x34, "Valider"); } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; if( from is PlayerMobile ) { PlayerMobile m = ( PlayerMobile ) from; TextRelay text = info.GetTextEntry( 1 ); switch ( info.ButtonID ) { case 1: { BankBox box = from.BankBox; int or = 0; if ( box != null) { Item[] po = box.FindItemsByType(typeof(Gold),true); for ( int i = 0; i < po.Length; ++i ) { or += po[i].Amount; } if ( or > Prix) { box.ConsumeTotal( typeof(Gold), Prix, true ); item.i_DateLocataire = DateTime.Now + TimeSpan.FromDays (7.0); item.i_locataire = from; item.i_Argent += Prix; item.Name = m.Name; from.SendMessage("Vous êtes locataire pour une semaine!"); from.SendMessage("Le locataire est : {0}.", item.i_locataire.Name); from.SendMessage("Vous louez ce bâtiment jusqu'au : {0}",item.i_DateLocataire); } else { from.SendMessage("Vous n'avez pas assez d'or dans votre coffre de banque."); } } break; } } } } } public class PayerGump : Gump { private Pancarte item; private int Prix; public PayerGump(Mobile from, Pancarte pancarte) : base (20, 30) { Mobile mobile = from; item = pancarte; Prix = item.i_Loyer; AddPage(0); AddBackground( 0, 0, 450, 150, 5054); AddLabel(25, 10, 0x480, "Payer un loyer."); AddLabel(25, 30, 0x480, "Le prix du loyer est " + item.i_Loyer + " pièces d'or par semaine." ); AddLabel(25, 50, 0x480, "Vous pouvez payer plusieurs loyer d'avance jusque :"); AddLabel(25, 70, 0x480, "Date : " + item.i_Date); AddButton( 25, 90, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0); AddLabel(65, 90, 0x34, "Valider"); } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; if( from is PlayerMobile ) { PlayerMobile m = ( PlayerMobile ) from; TextRelay text = info.GetTextEntry( 1 ); switch ( info.ButtonID ) { case 1: { BankBox box = from.BankBox; int or = 0; if ( box != null) { Item[] po = box.FindItemsByType(typeof(Gold),true); for ( int i = 0; i < po.Length; ++i ) { or += po[i].Amount; } if ( or > Prix) { box.ConsumeTotal( typeof(Gold), Prix, true ); item.i_DateLocataire = item.i_DateLocataire + TimeSpan.FromDays (7.0); item.i_Argent += Prix; from.SendMessage("Vous êtes locataire pour une semaine supplémentaire!"); from.SendMessage("Vous êtes locataire jusqu'au :"); from.SendMessage(" {0}.", item.i_DateLocataire); } else { from.SendMessage("Vous n'avez pas assez d'or dans votre coffre de banque."); } } break; } } } } } public class PayerAchatGump : Gump { private Pancarte item; private int Prix; public PayerAchatGump(Mobile from, Pancarte pancarte) : base (20, 30) { Mobile mobile = from; item = pancarte; Prix = item.i_Acheter; AddPage(0); AddBackground( 0, 0, 450, 150, 5054); AddLabel(25, 10, 0x480, "Payer le bâtiment."); AddLabel(25, 30, 0x480, "Le prix du bâtiment est " + item.i_Acheter + " pièces d'or pour 60 jours." ); AddLabel(25, 50, 0x480, "Vous pouvez payer plusieurs fois d'avance."); AddLabel(25, 70, 0x480, "Vous posséder ce bâtiment jusqu'au : " + item.i_Date); AddButton( 25, 90, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0); AddLabel(65, 90, 0x34, "Valider"); } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; if( from is PlayerMobile ) { PlayerMobile m = ( PlayerMobile ) from; TextRelay text = info.GetTextEntry( 1 ); switch ( info.ButtonID ) { case 1: { BankBox box = from.BankBox; int or = 0; if ( box != null) { Item[] po = box.FindItemsByType(typeof(Gold),true); for ( int i = 0; i < po.Length; ++i ) { or += po[i].Amount; } if ( or > Prix) { box.ConsumeTotal( typeof(Gold), Prix, true ); item.i_Date = item.i_Date + TimeSpan.FromDays (60.0); item.i_ArgentAdmin += Prix; from.SendMessage("Vous êtes propriétaire pour 60 jours supplémentaire!"); from.SendMessage("Vous êtes propriétaire jusqu'au : "); from.SendMessage(" {0}.", item.i_Date); } else { from.SendMessage("Vous n'avez pas assez d'or dans votre coffre de banque."); } } break; } } } } } //Pancarte qui permet de cloner une pancarte de base. (fait un lien vers une pancarte de base). public class Pancarte1 : Item { public Item i_Lien; private Mobile m; [Constructable] public Pancarte1() : base( 0xBD2 ) { Name = "Pancarte Double"; Movable = false; } public Pancarte1( Serial serial ) : base( serial ) { } [CommandProperty( AccessLevel.GameMaster )] public Item Lien { get { return i_Lien; } set { i_Lien = value; } } public override void OnDoubleClick( Mobile m ) { Pancarte p_Lien = (Pancarte)i_Lien; if (m.AccessLevel >= AccessLevel.GameMaster && i_Lien == null) { //Pancarte1 item = this; m.Target = new LienTarget(this); } if (i_Lien != null) { if (p_Lien.i_proprio == m || p_Lien.i_locataire == m) { m.SendGump(new PancarteGump(m, p_Lien)); m.SendSound(0xED); } else { m.SendMessage("Vous n'êtes ni le propriétaire, ni le locataire!"); } } } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); // version writer.Write(i_Lien); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 0: { i_Lien = reader.ReadItem(); break; } } } } public class LienTarget : Target { Pancarte1 pancarte; public LienTarget(Pancarte1 i_Pancarte) : base( 20, false, TargetFlags.None) { pancarte = i_Pancarte; } protected override void OnTarget( Mobile from, object targ ) { PlayerMobile m = (PlayerMobile)from; if (targ is Pancarte) { Pancarte pancarteLien = (Pancarte)targ; pancarte.i_Lien = pancarteLien; //.ItemID; } else if (targ is Mobile) { m.SendMessage("Vous ne pouvez pas cibler un personnage!"); } else { m.SendMessage("Vous devez cibler la pancarte de base!"); } } } } |
| CODE |
public Point2D point = 100,100; //Tu peus aussi placer la variable avec la commande props. public Point2D point2 = 110,110; if ( (point.X < targ.Location.X > point2.X) && (point.Y < targ.Location.Y > point2.Y) ) { } |
| CODE |
private Point3D i_pointA; private Point3D i_pointB; [CommandProperty( AccessLevel.GameMaster )] public Point3D pointA { get { return i_pointA; } set { i_pointA = value; } } [CommandProperty( AccessLevel.GameMaster )] public Point3D pointB { get { return i_pointB; } set { i_pointB = value; } } |
| CODE |
writer.Write((Point3D) i_pointA); writer.Write((Point3D) i_pointB); |
| CODE |
i_pointA = reader.ReadPoint3D(); i_pointB = reader.ReadPoint3D(); |
| CODE |
public class LockerTarget : Target { Pancarte pancarte; public LockerTarget(Pancarte i_Pancarte) : base( 8, false, TargetFlags.None) // base(Nbre de case, peut target le sol, bheu) { pancarte = i_Pancarte; } protected override void OnTarget( Mobile from, object targ ) { Perso m = (Perso)from; from.Frozen = false; if (targ is Mobile && targ != m) { m.SendMessage("Vous ne pouvez pas locker un personnage!"); } else if (targ == pancarte || targ is Pancarte || targ is PancarteMini || targ is PancarteDouble) { m.SendMessage("Vous ne pouvez pas locker la pancarte!"); } else if ( targ is Mobile && targ == m) { m.SendMessage("Vous ne pouvez pas vous cibler!"); } else if (targ is Item) { Item i_cible = (Item)targ; if ( ( pancarte.pointA.X < i_cible.Location.X ) && ( i_cible.Location.X < pancarte.pointB.X ) && ( pancarte.pointA.Y < i_cible.Location.Y ) && ( i_cible.Location.Y < pancarte.pointB.Y ) ) { string nom = i_cible.Name; i_cible.Movable = false; i_cible.Name = nom + " locker par :" + m.Name; } else { m.SendMessage("Vous devez cibler un objet qui se trouve dans le batiment!"); } } else { m.SendMessage("Vous devez cibler un objet!"); } } } public class DeLockerTarget : Target { Pancarte pancarte; public DeLockerTarget(Pancarte i_Pancarte) : base( 8, false, TargetFlags.None) // base(Nbre de case, peut target le sol, bheu) { pancarte = i_Pancarte; } protected override void OnTarget( Mobile from, object targ ) { Perso m = (Perso)from; from.Frozen = false; if (targ is Mobile && targ != m) { m.SendMessage("Vous ne pouvez pas délocker un personnage!"); } else if (targ == pancarte || targ is Pancarte || targ is PancarteMini || targ is PancarteDouble) { m.SendMessage("Vous ne pouvez pas délocker la pancarte!"); } else if ( targ is Mobile && targ == m) { m.SendMessage("Vous ne pouvez pas vous cibler!"); } else if (targ is Item) { Item i_cible = (Item)targ; if ( ( pancarte.pointA.X < i_cible.Location.X ) && ( i_cible.Location.X < pancarte.pointB.X) && ( pancarte.pointA.Y < i_cible.Location.Y ) && ( i_cible.Location.X < pancarte.pointB.Y) ) { string nom = i_cible.Name; i_cible.Movable = true; i_cible.Name = nom + " Délocker par :" + m.Name; } else { m.SendMessage("Vous devez cibler un objet qui se trouve dans le batiment!"); } } else { m.SendMessage("Vous devez cibler un objet!"); } } } |
| CODE |
| if ( ( pancarte.pointA.X < i_cible.Location.X ) && ( i_cible.Location.X < pancarte.pointB.X) && ( pancarte.pointA.Y < i_cible.Location.Y ) && ( i_cible.Location.X < pancarte.pointB.Y) ) |