| QUOTE |
| using System; using Server; using Server.Mobiles; using Server.Network; using Server.Spells.First; using Server.Targeting; namespace Server.Items { [FlipableAttribute(0x14E8, 0x14E7)] public class Piquet : Item { Mobile from; static bool m_attach; [CommandProperty( AccessLevel.GameMaster )] public bool Attach { get { return m_attach; } set { m_attach = value; } } [Constructable] public Piquet() : base(0x14E8) { Name = "Piquet"; this.Movable = false; } public Piquet( Serial serial ) : base( serial ) { } public override void OnDoubleClick ( Mobile from ) { from.Target = new InternalTarget () ; from.SendMessage("Quel animal voulez-vous attacher?"); } private class InternalTarget : Target { public InternalTarget() : base( 3, false, TargetFlags.None ) { } protected override void OnTarget( Mobile from, object targeted ) { if ( targeted is BaseCreature ) { Mobile m = from; BaseCreature c = (BaseCreature)targeted; if ( c.Body.IsAnimal || c.Body.IsMonster || c.Body.IsSea ) { if (!c.Controled || !c.Tamable) { from.PrivateOverheadMessage(0, 0, false, "Cet animal ne vous appartient pas.", from.NetState) ; } else if ( !c.Tamable ) { from.PrivateOverheadMessage(0, 0, false, "Cet animal ne vous appartient pas.", from.NetState) ; } else if ( m_attach == true ) { c.Frozen = false; (BaseCreature)targeted.Ridable = true; from.PrivateOverheadMessage(0, 0, false, "Votre animal est détaché.", from.NetState) ; m_attach = false; } else { from.PrivateOverheadMessage(0, 0, false, "Votre animal est attaché.", from.NetState) ; (BaseCreature)targeted.Ridable = false; c.Frozen = true; m_attach = true; } } } else if ( targeted is Mobile ) { from.PrivateOverheadMessage(0, 0, false, "Vous ne pouvez pas attachez une personne.", from.NetState) ; } else { from.PrivateOverheadMessage(0, 0, false, "Cet objet ne bouge pas...", from.NetState) ; } } } 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(); } } } |
| CODE |
| using System; using Server; using Server.Mobiles; using Server.Network; using Server.Spells.First; using Server.Targeting; namespace Server.Items { [FlipableAttribute(0x14E8, 0x14E7)] public class Piquet : Item { Mobile from; [Constructable] public Piquet() : base(0x14E8) { Name = "Piquet"; this.Movable = false; } public Piquet( Serial serial ) : base( serial ) { } public override void OnDoubleClick ( Mobile from ) { from.Target = new InternalTarget (); from.SendMessage("Quel animal voulez-vous attacher?"); } private class InternalTarget : Target { public InternalTarget() : base( 3, false, TargetFlags.None ) { } protected override void OnTarget( Mobile from, object targeted ) { if ( !from.CanSee ) { from.SendLocalizedMessage( "Vous ne voyez pas votre cible." ); } else if ( targeted is BaseMount ) { Mobile m = from; BaseMount c = (BaseMount)targeted; if ( c is BaseMount) { if (!c.Controled || !c.Tamable) { from.PrivateOverheadMessage(0, 0, false, "Cet animal ne vous appartient pas.", from.NetState); } } else if ( !c.Tamable ) { from.PrivateOverheadMessage(0, 0, false, "Cet animal ne vous appartient pas.", from.NetState); } if (c.Frozen && !c.Ridable) { if ( c.Controled && c.ControlMaster == from ) { c.Frozen = false; (BaseCreature)targeted.Ridable = true; from.PrivateOverheadMessage(0, 0, false, "Votre animal est détaché.", from.NetState); } } else { [b] if ( !c.Range == 3 ) { from.SendLocalizedMessage( "Votre animal est trop loin" ); } [/b] from.PrivateOverheadMessage(0, 0, false, "Votre animal est attaché.", from.NetState); (BaseCreature)targeted.Ridable = false; c.Frozen = true; } } else if ( targeted is Mobile ) { from.PrivateOverheadMessage(0, 0, false, "Vous ne pouvez pas attachez une personne.", from.NetState); } else { from.PrivateOverheadMessage(0, 0, false, "Cet objet ne bouge pas...", from.NetState); } } } 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(); } } } |
| CODE |
| [b] if ( !c.Range == 3 ) { from.SendLocalizedMessage( "Votre animal est trop loin" ); } |
| CODE |
| BaseMount c = (BaseMount)targeted; if ( c is BaseMount) //celui ci, tu l'a teste 2 lignes plus haut { if (!c.Controled || !c.Tamable) |
| CODE |
if (!c.Controled || !c.Tamable) |
| CODE |
if ( c.Controled && c.ControlMaster == from ) |
| CODE |
this.InRange( from, 4 ) |
| CODE |
if ( c is BaseMount) if ( c.Controled && c.ControlMaster == from ) if (this.InRange( from, 4 )) if (c.Frozen && !c.Ridable) detacher else attacher else trop loin else c pas a vous else c pas une monture |
| QUOTE (Gregory @ Aug 25 2003, 04:21 PM) |
| Après ajustement et correction, voila mes 2 problèmes : 1 : Je ne sais pas comment dire qu'il ne peut pas être monté, car il n'y a rien du style "ridable". Y a-til un autre moyen? 2 : La bêbête perd son maitre lors d'une déconnection, comment le faire garder?? Merci d'avance :) |
| CODE |
| /* Hitching Post By Crystal 2003 l'item en fait agit comme un * Pnj Stable master sans certaine contrainte , il devra etre * posé dans une maison le nombre de pet en stable sera de * 2 + Taming / 20 cela permettra a tout le monde de stocker 2 pet * Cheval et Pack par exepmle , mais au tameur de stocké tout ces * pet de combat a 60 sa fait 5*/ using System; using Server; using Server.Items; using System.Collections; using Server.Prompts; using Server.Targeting; using Server.Network; using Server.Mobiles; using Server.Gumps; using Server.ContextMenus; namespace Server.Items { [FlipableAttribute( 0x14E7, 0x14E8 )] public class EtableMaison : AddonComponent { [Constructable] public EtableMaison() : base( 0x14E7 ) { Movable = false; Weight = 10.0; Name = "Piquet Etable"; } public override void OnDoubleClick ( Mobile from ) { ArrayList list = new ArrayList(); for ( int i = 0; i < from.Stabled.Count; ++i ) { BaseCreature pet = from.Stabled[i] as BaseCreature; if ( pet == null || pet.Deleted ) { pet.IsStabled = false; from.Stabled.RemoveAt( i ); --i; continue; } list.Add( pet ); } from.SendGump( new GumpMonEtable ( from, list ) ); } public EtableMaison( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 0: { break; } } } /* //////////////////////Stable Menu entry /////////////////////// bon je vais certainement en chier parce que a pparemment les menu entries je pige nada. donc je prefere faire un gump et refaire les fonctions de A a Z ( au moin c'est ma merde je nage dedans tout seul) */ //Target stable// private class PrivStableTarget : Target { private Mobile from; BaseCreature pet = null; public PrivStableTarget( Mobile m_from ) : base( 12, false, TargetFlags.None ) { from = m_from; } protected override void OnTarget( Mobile from, object targeted ) { if ( targeted is BaseCreature ) { pet=(BaseCreature)targeted; if ( !pet.Controled || pet.ControlMaster != from ) { from.SendLocalizedMessage( 1042562 ); // You do not own that pet! } else if ( pet.Summoned ) { from.SendLocalizedMessage( 502673 ); // I can not stable summoned creatures. } else if ( pet.Body.IsHuman ) { from.SendLocalizedMessage( 502672 ); // HA HA HA! Sorry, I am not an inn. } else if ( (pet is PackLlama || pet is PackHorse || pet is Beetle) && (pet.Backpack != null && pet.Backpack.Items.Count > 0) ) { from.SendLocalizedMessage( 1042563 ); // You need to unload your pet. } else if ( pet.Combatant != null && pet.InRange( pet.Combatant, 12 ) && pet.Map == pet.Combatant.Map ) { from.SendLocalizedMessage( 1042564 ); // I'm sorry. Your pet seems to be busy. } else if ( from.Stabled.Count >= (2 + ((from.Skills[SkillName.AnimalTaming].Value)/10))) // Limite supérieur de l'etable . { from.SendLocalizedMessage( 1042565 ); // You have too many pets in the stables! } else { pet.ControlTarget = null; pet.ControlOrder = OrderType.Stay; pet.Internalize(); pet.SetControlMaster( null ); pet.SummonMaster = null; pet.IsStabled = true; from.Stabled.Add( pet ); } } else if ( targeted == from ) from.SendMessage( "huhu ..... " ); else from.SendMessage( "Vous ne pouvez mettre cela a l'etable" ); } } // le gump // public class GumpMonEtable : Gump { private EtableMaison trainer; private Mobile m_From; private ArrayList m_List; public GumpMonEtable(Mobile from , ArrayList list ) : base(0,0) { m_From = from; m_List = list; int MyPetLimit = (2 + ((int)(from.Skills[SkillName.AnimalTaming].Value)/30)); AddPage(0); AddBackground( 1, 1, 390, 272, 2600); AddLabel( 116, 24, 0, "L'etable : ("+ MyPetLimit +" pet maximum )"); AddBackground( 57, 79, 271, 163, 3000); AddItem( 10, 100, 5351); AddItem( 330, 100, 5352); AddButton( 63, 60, 9762, 9764, 11, GumpButtonType.Reply, 0 ); AddButton( 206, 60, 5601, 5603, 12, GumpButtonType.Reply, 0 ); AddLabel( 82, 61, 0, "Rentrer a l'etable"); AddLabel( 224, 60, 0, "Sortir les betes"); AddImage( 95, 40, 96); for ( int i = 0; i < list.Count; ++i ) { BaseCreature pet = list[i] as BaseCreature; if ( pet == null || pet.Deleted ) continue; AddButton( 59, 81 + (i * 20), 5601, 5603, i + 1, GumpButtonType.Reply, 0 ); AddHtml( 94, 83 + (i * 20), 271, 89, String.Format( "<BASEFONT COLOR=#FF0000>{0}</BASEFONT>", pet.Name ), false, false ); } } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; //{ int index = info.ButtonID - 1; if ( index >= 0 && index < m_List.Count ) { BaseCreature pet = m_List[index] as BaseCreature; //{ if ( (m_From.Followers + pet.ControlSlots) <= m_From.FollowersMax ) { pet.SetControlMaster( m_From ); if ( pet.Summoned ) pet.SummonMaster = m_From; pet.ControlTarget = m_From; pet.ControlOrder = OrderType.Follow; pet.Location = m_From.Location; pet.Map = m_From.Map; pet.IsStabled = false; m_From.Stabled.Remove( pet ); from.SendLocalizedMessage ( 1042559 ); // Here you go... and good day to you! } else { from.SendLocalizedMessage ( 1049612, pet.Name ); // ~1_NAME~ remained in the stables because you have too many followers. } } //} else if (info.ButtonID == 11 ) from.Target = new PrivStableTarget(from); else if (info.ButtonID == 12 ) { bool claimed = false; int stabled = 0; for ( int i = 0; i < from.Stabled.Count; ++i ) { BaseCreature pet = from.Stabled[i] as BaseCreature; if ( pet == null || pet.Deleted ) { pet.IsStabled = false; from.Stabled.RemoveAt( i ); --i; continue; } ++stabled; if ( (from.Followers + pet.ControlSlots) <= from.FollowersMax ) { pet.SetControlMaster( from ); if ( pet.Summoned ) pet.SummonMaster = from; pet.ControlTarget = from; pet.ControlOrder = OrderType.Follow; pet.Location = from.Location; pet.Map = from.Map; pet.IsStabled = false; from.Stabled.RemoveAt( i ); --i; claimed = true; } else { from.SendLocalizedMessage ( 1049612, pet.Name ); // ~1_NAME~ remained in the stables because you have too many followers. } } if ( claimed ) from.SendLocalizedMessage ( 1042559 ); // Here you go... and good day to you! else if ( stabled == 0 ) from.SendLocalizedMessage ( 502671 ); // But I have no animals stabled with me at the moment! } } } } } //} namespace Server.Items { public class HitchingPostAddon : BaseAddon { public override BaseAddonDeed Deed{ get{ return new HitchingPostDeed(); } } [Constructable] public HitchingPostAddon() { AddComponent( new EtableMaison(), 0, 0, 0 ); } public HitchingPostAddon( Serial serial ) : base( serial ) { } 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 class HitchingPostDeed : BaseAddonDeed { public override BaseAddon Addon{ get{ return new HitchingPostAddon(); } } public override int LabelNumber{ get{ return 1025351; } } // Hitching Post [Constructable] public HitchingPostDeed() { } public HitchingPostDeed( Serial serial ) : base( serial ) { } 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(); } } } |