| CODE |
using System; using Server; using Server.Network; namespace Server.Scripts.Commands { public class Renaitre { public static void Initialize() { Server.Commands.Register( "resurrect", AccessLevel.Player, new CommandEventHandler( Renaitre_OnCommand ) ); } private static void Renaitre_OnCommand( CommandEventArgs e ) { Mobile mob = e.Mobile; mob.Resurrect(); } } } |
| CODE |
using System; using Server; using Server.Network; using Server.Mobiles; namespace Server.Scripts.Commands { public class Renaitre { public static void Initialize() { Server.Commands.Register( "Renaitre", AccessLevel.Player, new CommandEventHandler( Renaitre_OnCommand ) ); } private static void Renaitre_OnCommand( CommandEventArgs e ) { Mobile mob = e.Mobile; int MAX = 10; //10 fois par jour PlayerMobile player = (PlayerMobile) mob; if(player.nbResurect>= MAX) player.SendMessage( "Desolé vous ne pouvez plus utiliser cette commande pour aujourd'hui" ); else { player.Resurrect(); player.nbResurect++; player.SendMessage( "nombre d'utilisation restant : {0}",MAX-player.nbResurect ); if(player.nbResurect== MAX) { player.tempEnMin=0; TimerResurect timerResurect = new TimerResurect(player); timerResurect.Start(); } //mob.Resurrect(); } } } public class TimerResurect : Timer { private PlayerMobile m_player; public TimerResurect(PlayerMobile player) : base ( TimeSpan.FromMinutes (1.0), TimeSpan.FromMinutes (1.0) ) { m_player = player; m_player.tempEnMin++; } //appres 1 minute protected override void OnTick() { m_player.tempEnMin++; if(m_player.tempEnMin>=1440) //1440 min = 24h { m_player.tempEnMin=0; m_player.nbResurect=0; Stop(); } //tout les 1min le onTick s'executera //pourquoi pas avoir fait un timer de 24h directement , car si reboot le timer s'arrete //avec cette metode j'enregistre dans le joueur le temp pour le reprendre au reboot et on perd qu'une min } } } |
| CODE |
commencez par ajouter using Server.Scripts.Commands; ajoute de 2 nouvelles variables private int m_nbResurect; private int m_tempEnMin; [CommandProperty( AccessLevel.GameMaster )] public int nbResurect { get{ return m_nbResurect;} set{ m_nbResurect = value;} } [CommandProperty( AccessLevel.GameMaster )] public int tempEnMin { get{ return m_tempEnMin;} set{ m_tempEnMin = value;} } a la fin de Onlogin ajoutez // si le timer etais pas fini je le relance PlayerMobile player = (PlayerMobile) from; if(player.tempEnMin > 0) { TimerResurect timerResurect = new TimerResurect(player); timerResurect.Start(); } dans Deserialize ajoutez m_nbResurect = reader.ReadInt(); m_tempEnMin = reader.ReadInt(); et sans oublier le Serialize writer.Write( (int) m_nbResurect ); writer.Write( (int) m_tempEnMin ); |
| CODE |
using System; using Server; using Server.Network; using Server.Mobiles; namespace Server.Scripts.Commands { public class Renaitre { public static void Initialize() { Server.Commands.Register( "resurrect", AccessLevel.Player, new CommandEventHandler( Renaitre_OnCommand ) ); } private static void Renaitre_OnCommand( CommandEventArgs e ) { Mobile mob = e.Mobile; mob.Resurrect(); Res timer = new Res(mob); timer.Start(); } } public class Res : Timer { private Mobile mob; public Res(Mobile from ) : base ( TimeSpan.FromHours (2.0), TimeSpan.FromHours (2.0) ) // On indique le temps que durera le script aux deux endroits. { mob = from; // on précise que la varibale mob sera finalewment le mobile from mob.SendMessage( "Vous revenez à la vie!" ); // on précise a celui qui a activer le Timer que celui-ci démare } protected override void OnTick() //Ici c'est la fin du timer. { Stop(); // On précise que le timer ne recommance pas. } } } |
| QUOTE (Injall @ May 30 2004, 02:53 PM) |
| mais je n'arrive pas a créer la condition du style "if Res = !Stop" qui reperrerais si le timer est finis :unsure: |