| CODE |
using System; using System.Text; using Server.Gumps; using Server.Network; namespace Server.Misc //* .TestCenter { public class TestGump : Gump { public static void Initialize() { // Register our speech handler EventSink.Speech += new SpeechEventHandler( EventSink_Speech ); } private static void EventSink_Speech( SpeechEventArgs args ) { if ( !args.Handled && Insensitive.Equals( args.Speech, "Test" ) ) //* Quand un joueur dit Test ... { args.Mobile.SendGump( new TestGump() ); //* ...ça ouvre le gump TestGump args.Handled = true; } } public TestGump() : base( 40, 40 ) //* Gump TestGump { AddPage( 0 ); ///* AddBackground( 0, 0, 160, 120, 5054); AddButton( 10, 10, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0 ); AddLabel( 45, 10, 0x34, "Bouton Test" ); //* Nom du bouton } public override void OnResponse ( NetState state, RelayInfo info ) ///* ( NetState Sender ) ??? Quel est la différence? { Mobile from = state.Mobile; switch ( info.ButtonID ) { case 1: // Test { state.Mobile.SendMessage( " Réussi! Nbr de click" ); //* Marque le message Réussi + le nombre de click state.Mobile.Location = new Point3D(1500,1628,10); //* Teleporte le joueur à l'endroit. state.Mobile.Map = Map.Felucca; break; } } } } } |
| CODE |
using System; using System.Text; using Server.Gumps; using Server.Network; namespace Server.Misc //* .TestCenter { public class TestGump : Gump { public static DateTime LastEffectTime; //* = DateTime.Now; public static int NbrClick; //* = 0; public static void Initialize() { // Register our speech handler EventSink.Speech += new SpeechEventHandler( EventSink_Speech ); } private static void EventSink_Speech( SpeechEventArgs args ) { if ( !args.Handled && Insensitive.Equals( args.Speech, "Test" ) ) //* Quand un joueur dit Test ... { args.Mobile.SendGump( new TestGump() ); //* ...ça ouvre le gump TestGump args.Handled = true; } } public TestGump() : base( 40, 40 ) //* Gump TestGump { AddPage( 0 ); ///* AddBackground( 0, 0, 160, 120, 5054); AddButton( 10, 10, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0 ); AddLabel( 45, 10, 0x34, "Bouton Test" ); //* Nom du bouton } public override void OnResponse ( NetState state, RelayInfo info ) ///* ( NetState Sender ) ??? Quel est la différence? { Mobile from = state.Mobile; switch ( info.ButtonID ) { case 1: // Test { if ( DateTime.Now >= LastEffectTime + new TimeSpan( 0, 0, 50 ) ) { state.Mobile.SendMessage( " Réussi!" ); //* Marque le message Réussi state.Mobile.Location = new Point3D(1500,1628,10); //* Teleporte le joueur à l'endroit. state.Mobile.Map = Map.Felucca; NbrClick++; LastEffectTime = DateTime.Now; } else { state.Mobile.SendMessage( " Vous ne pouvez plus clicker !" ); } state.Mobile.SendMessage( " Fin du test. Nbr de Click : {0}. Date du dernier Click : {1} .", Convert.ToString(NbrClick), Convert.ToString(LastEffectTime) ); break; } } } } } |
| CODE |
public static DateTime LastEffectTime; //* = DateTime.Now; public static int NbrClick; //* = 0; |
| CODE |
NbrClick++; LastEffectTime = DateTime.Now; |
| CODE |
using System; using System.Text; using Server.Gumps; using Server.Network; namespace Server.Misc //* .TestCenter { public class TestGump : Gump { public static DateTime LastEffectTime; //* = DateTime.Now; public static int NbrClick; //* = 0; private static int Count; private static DateTime DateTest; public static void Initialize() { // Register our speech handler EventSink.Speech += new SpeechEventHandler( EventSink_Speech ); } private static void EventSink_Speech( SpeechEventArgs args ) { if ( !args.Handled && Insensitive.Equals( args.Speech, "Test" ) ) //* Quand un joueur dit Test ... { args.Mobile.SendGump( new TestGump() ); //* ...ça ouvre le gump TestGump args.Handled = true; } } public TestGump() : base( 40, 40 ) //* Gump TestGump { AddPage( 0 ); ///* AddBackground( 0, 0, 160, 120, 5054); AddButton( 10, 10, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0 ); AddLabel( 45, 10, 0x34, "Bouton Test" ); //* Nom du bouton } public override void OnResponse ( NetState state, RelayInfo info ) { Mobile from = state.Mobile; switch ( info.ButtonID ) { case 1: // Test { if ( DateTime.Now >= LastEffectTime + new TimeSpan( 0, 0, 50 ) ) { state.Mobile.SendMessage( " Réussi!" ); //* Marque le message Réussi state.Mobile.Location = new Point3D(1500,1628,10); //* Teleporte le joueur à l'endroit. state.Mobile.Map = Map.Felucca; get { return NbrClick; } set { NbrClick = NbrClick++; } //NbrClick++; LastEffectTime = DateTime.Now; get { return Count; } set { Count = Count++; } //Count++; DateTest = DateTime.Now; } else { state.Mobile.SendMessage( " Vous ne pouvez plus clicker !" ); } state.Mobile.SendMessage( " Fin du test. Nbr de Click : {0}. Date du dernier Click : {1} .", Convert.ToString(NbrClick), Convert.ToString(LastEffectTime) ); state.Mobile.SendMessage( " Fin du test2. Nbr de Click : {0}. Date du dernier Click : {1} .", Convert.ToString(Count), Convert.ToString(DateTest) ); break; } } } public TestGump( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); // version writer.write(LastEffectTime); writer.write(NbrClick); writer.write(Count); writer.write(DateTest); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); LastEffectTime = reader.ReadTimeSpan(); NbrClick = reader.ReadInt(); Count = reader.ReadInt(); DateTest = reader.ReadTimeSpan(); } } } |
| CODE |
public int m_NbrClick; public DateTime m_DernierClick; |
| CODE |
[CommandProperty( AccessLevel.GameMaster )] public int NbrClick { get { return m_NbrClick; } set { m_NbrClick = value; } } [CommandProperty( AccessLevel.GameMaster )] public DateTime DernierClick { get { return m_DernierClick; } set { m_DernierClick = DateTime.Now; } } |
| CODE |
| pj.m_DernierClick = DateTime.Now; |
| CODE |
using System; using System.Text; using Server.Gumps; using Server.Network; using Server.Mobiles; namespace Server.Misc { public class CompteurGump : Gump { public static void Initialize() { EventSink.Speech += new SpeechEventHandler( Test_Speech ); } public static void Test_Speech( SpeechEventArgs args ) { if ( !args.Handled && Insensitive.Equals( args.Speech, "Test" ) ) { args.Mobile.SendGump( new CompteurGump() ); args.Handled = true; } } public CompteurGump() : base( 40, 40 ) { AddPage( 0 ); AddButton( 10, 10, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0 ); AddLabel( 45, 10, 0x34, "Bouton Test" ); } public override void OnResponse ( NetState state, RelayInfo info ) { Mobile from = state.Mobile; switch ( info.ButtonID ) { case 1: { ///* ici j'aimerais bien mettre +1 à m_NbrClick et la date actuel(DateTime.Now) à m_DernierClick qui se trouve sur le pj. (Dans le fichier PlayerMobile.) break; } } } } } |
| CODE |
| // ce n'est que le gump parce que j'ai pas compris pourquoi tu le mettais dans le namespace "Misc" // tu peux l'appellez de n'importe quoi (dclic , une commande ou un speech) using System; using Server.Gumps; using Server.Network; using Server.Mobiles; namespace Server.Gumps { public class CompteurGump : Gump { private Mobile m_from; public CompteurGump(Mobile from) : base( 40, 40 ) { m_from = from; AddPage( 0 ); AddButton( 10, 10, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0 ); AddLabel( 45, 10, 0x34, "Bouton Test" ); } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; switch ( info.ButtonID ) { case 0: if ((m_from.m_DernierClick - DateTime.Now) > 21600 ) // on verifie si il y a bien 6H qu'il a clicquer { m_from.m_NbrClick =+1; // on ajoute 1 au clic m_from.m_DernierClick = DateTime.Now; // on remet le compteur de temps a l'heure } else { m_from.SendMessage( "vous devez attendre 6H " ); } break; } } } } // si il y a des erreurs c'est que les variables sont pas bonne ou qu'il en manque, et j'ai encore bcp de mal avec sa |
| CODE |
Application has generated an exception that could not be handled. Process id=0xf90(3984), Thread id=0xa50(2640). |
| CODE |
Exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet. at Server.Misc.CompteurGump.OnResponse(NetState state, RelayInfo info) at Server.Network.PacketHandlers.DisplayGumpResponse(NetState state, PacketReader pvSrc) at Server.Network.MessagePump.HandleReceive(NetState ns) at Server.Network.MessagePump.Slice() at Server.Core.Main(String[] args) |
| CODE |
// ce n'est que le gump parce que j'ai pas compris pourquoi tu le mettais dans le namespace "Misc" // tu peux l'appellez de n'importe quoi (dclic , une commande ou un speech) using System; using Server.Gumps; using Server.Network; using Server.Mobiles; using System.Text; namespace Server.Gumps { public class CompteurGump : Gump { public static void Initialize() { // Register our speech handler EventSink.Speech += new SpeechEventHandler( EventSink_Speech ); } private static void EventSink_Speech( SpeechEventArgs args ) { if ( !args.Handled && Insensitive.Equals( args.Speech, "test" ) ) { args.Mobile.SendGump( new CompteurGump(args.Mobile) ); args.Handled = true; } } private Mobile m_from; private PlayerMobile someperso; public CompteurGump(Mobile from) : base( 40, 40 ) { Mobile m_from = from; PlayerMobile someperso = m_from as PlayerMobile; AddPage( 0 ); AddButton( 10, 10, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0 ); AddLabel( 45, 10, 0x34, "Bouton Test" ); } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; PlayerMobile someperso = m_from as PlayerMobile; switch ( info.ButtonID ) { case 1: ///* if ((m_from.m_DernierClick - DateTime.Now) > 21600 ) // on verifie si il y a bien 6H qu'il a clicquer { state.Mobile.SendMessage( " vous devez attendre 6H " ); ///* if ( someperso != null ) ///* { someperso.m_NbrClick = 21; // on ajoute 1 au clic someperso.m_DernierClick = DateTime.Now; // on remet le compteur de temps a l'heure ///* } ///* else ///* { ///* } ///* else ///* { state.Mobile.SendMessage( " RATER! " ); ///* } } break; } } } } |
| CODE |
using System; using Server.Gumps; using Server.Network; using Server.Mobiles; using System.Text; namespace Server.Gumps { public class CompteurGump : Gump { public static void Initialize() { // Register our speech handler EventSink.Speech += new SpeechEventHandler( EventSink_Speech ); } private static void EventSink_Speech( SpeechEventArgs args ) { if ( !args.Handled && Insensitive.Equals( args.Speech, "test" ) ) { args.Mobile.SendGump( new CompteurGump(args.Mobile) ); args.Handled = true; } } private Mobile m_Player1; private TimeSpan m_Delay = TimeSpan.FromHours( 6.0 ); ///* Pour avoir des minutes : FromMinutes( 45.0 ); (en minutes) public CompteurGump(Mobile from) : base( 40, 40 ) { m_Player1 = from; AddPage( 0 ); AddButton( 10, 10, 0xFB7, 0xFB9, 1, GumpButtonType.Reply, 0 ); AddLabel( 45, 10, 0x34, "Bouton Test" ); } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; switch ( info.ButtonID ) { case 1: { if( from is PlayerMobile ) { PlayerMobile m = ( PlayerMobile ) from; if ((m.m_DernierClick + m_Delay) < DateTime.Now ) { state.Mobile.SendMessage( " Vous gagnez un point, vous devez attendre 6H! " ); m.m_NbrClick++; ///* on ajoute 1 a m.m_NbrClick m.m_DernierClick = DateTime.Now; ///* on remet le compteur de temps a l'heure actuelle } else { state.Mobile.SendMessage( " RATER! " ); state.Mobile.SendMessage( " Vous devez attendre : {0}, avant de pouvoir cliquer à nouveau.", Convert.ToString((m.m_DernierClick + m_Delay) - DateTime.Now) ); } state.Mobile.SendMessage( " Fin du test. Nbr de Click : {0}. Date du dernier Click : {1} .", Convert.ToString(m.m_NbrClick), Convert.ToString(m.m_DernierClick) ); } } break; } } } } |