RunUO-FR
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
RunUO-FR

Forum de support pour RunUO en français.
 
AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Cdiscount : -30€ dès 300€ d’achat sur une sélection Apple
Voir le deal

 

 Agir sur une condition

Aller en bas 
2 participants
AuteurMessage
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

Agir sur une condition Empty
MessageSujet: Agir sur une condition   Agir sur une condition Icon_minipostedDim 5 Oct - 18:55

Rebonjour,

bon voilà...

je me demandais s'il était possible de faire "déclencher" quelque chose seulement lorsque, disons, telle variable égale telle affaire, etc.

Ce serait faisable avec des timers, mais je crois que ça prend beaucoup de mémoire, surtout si il y a plein d'Items qui utilise ce genre de chose. non?

Bon en gros, voici un exemple.





Code:
public void JeSaisPasQuelNomDonner (Mobile from)
{
    if ( Agir == true)
    {
          from.SendMessage(" JE SUIS EN TRAIN D'AGIR SUR UNE CONDITION! MOUHAHAHAHA!")
    }
}


AU lieu de faire quelque chose de ce genre, mais en l'ayant appeler dans la construction avant bien sur:

Code:
public void JeSaisPasQuelNomDonner (Mobile from)
{
    if ( Agir == true)
    {
          from.SendMessage(" JE SUIS EN TRAIN D'AGIR SUR UNE CONDITION! MOUHAHAHAHA!")
    }
    else
          Timer.DelayCall(TimeSpan.FromMilliseconds(1.0), new TimerCallback ( JeSaisPasQuelNomDonner ));
}
Il n'y aurait pas moyen de faire comme mon premier exemple et que ça agisse seulement quand c'est true? Sinon je vais devoir prendre la deuxième méthode... ce qui demande plus de mémoire et de complications, surtout avec ce que je veux faire.

Fait que c'est ça!Smile
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

Agir sur une condition Empty
MessageSujet: Re: Agir sur une condition   Agir sur une condition Icon_minipostedDim 5 Oct - 21:40

Salut ;o)

Effectivememt, tu peux faire tourner sans cesse un timer qui teste ta condition régulièrement, mais c'est moche.

Après, tout dépend de ta condition, et si c'est une variable, de sa définition. Les variables qui passent par un get/set sont parfaites pour ça, puisque lorsqu'on y fait référence, on passe par le code du get, et que chaque fois qu'on leur alloue une valeur, on passe par le code du set.

Mais tu peux t'abonner à des evenements spécifiques :

Déclare la méthode
Code:
public static void Initialize()

puis des abonnements a des handlers, exemples:
Code:

EventSink.Login += new LoginEventHandler( OnLogin );
EventSink.Logout += new LogoutEventHandler( OnLogout );
EventSink.Connected += new ConnectedEventHandler( EventSink_Connected );
EventSink.Disconnected += new DisconnectedEventHandler( EventSink_Disconnected );

Avec ceci, lorsque l'EventSink.Login sera déclenché, il appelera la méthode OnLogin de la classe qui a défini cet abonnement.

Tu trouvera des EventSink dans EventSink.cs, d'ailleurs les voici :
Code:

public delegate void CharacterCreatedEventHandler( CharacterCreatedEventArgs e );
   public delegate void OpenDoorMacroEventHandler( OpenDoorMacroEventArgs e );
   public delegate void SpeechEventHandler( SpeechEventArgs e );
   public delegate void LoginEventHandler( LoginEventArgs e );
   public delegate void ServerListEventHandler( ServerListEventArgs e );
   public delegate void MovementEventHandler( MovementEventArgs e );
   public delegate void HungerChangedEventHandler( HungerChangedEventArgs e );
   public delegate void CrashedEventHandler( CrashedEventArgs e );
   public delegate void ShutdownEventHandler( ShutdownEventArgs e );
   public delegate void HelpRequestEventHandler( HelpRequestEventArgs e );
   public delegate void DisarmRequestEventHandler( DisarmRequestEventArgs e );
   public delegate void StunRequestEventHandler( StunRequestEventArgs e );
   public delegate void OpenSpellbookRequestEventHandler( OpenSpellbookRequestEventArgs e );
   public delegate void CastSpellRequestEventHandler( CastSpellRequestEventArgs e );
   public delegate void AnimateRequestEventHandler( AnimateRequestEventArgs e );
   public delegate void LogoutEventHandler( LogoutEventArgs e );
   public delegate void SocketConnectEventHandler( SocketConnectEventArgs e );
   public delegate void ConnectedEventHandler( ConnectedEventArgs e );
   public delegate void DisconnectedEventHandler( DisconnectedEventArgs e );
   public delegate void RenameRequestEventHandler( RenameRequestEventArgs e );
   public delegate void PlayerDeathEventHandler( PlayerDeathEventArgs e );
   public delegate void VirtueGumpRequestEventHandler( VirtueGumpRequestEventArgs e );
   public delegate void VirtueItemRequestEventHandler( VirtueItemRequestEventArgs e );
   public delegate void VirtueMacroRequestEventHandler( VirtueMacroRequestEventArgs e );
   public delegate void ChatRequestEventHandler( ChatRequestEventArgs e );
   public delegate void AccountLoginEventHandler( AccountLoginEventArgs e );
   public delegate void PaperdollRequestEventHandler( PaperdollRequestEventArgs e );
   public delegate void ProfileRequestEventHandler( ProfileRequestEventArgs e );
   public delegate void ChangeProfileRequestEventHandler( ChangeProfileRequestEventArgs e );
   public delegate void AggressiveActionEventHandler( AggressiveActionEventArgs e );
   public delegate void GameLoginEventHandler( GameLoginEventArgs e );
   public delegate void DeleteRequestEventHandler( DeleteRequestEventArgs e );
   public delegate void WorldLoadEventHandler();
   public delegate void WorldSaveEventHandler( WorldSaveEventArgs e );
   public delegate void SetAbilityEventHandler( SetAbilityEventArgs e );
   public delegate void FastWalkEventHandler( FastWalkEventArgs e );
   public delegate void ServerStartedEventHandler();
   public delegate BaseGuild CreateGuildHandler( CreateGuildEventArgs e );
   public delegate void GuildGumpRequestHandler( GuildGumpRequestArgs e );
   public delegate void QuestGumpRequestHandler( QuestGumpRequestArgs e );

Avec ça, tu as déjà de quoi faire.
Revenir en haut Aller en bas
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

Agir sur une condition Empty
MessageSujet: Re: Agir sur une condition   Agir sur une condition Icon_minipostedDim 5 Oct - 22:40

Ceci dit, un évenement doit quand même être déclenché quelque part... Ca ne sert qu'à dispatcher l'info partout ou tu en as besoin, sans devoir revenir au code de départ.

Dis en un peu plus sur le genre de truc que tu veux faire, i y a sûrement une solution.
Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

Agir sur une condition Empty
MessageSujet: Re: Agir sur une condition   Agir sur une condition Icon_minipostedDim 5 Oct - 23:02

Je comprend pas grand chose Razz C'est pas très clair.

Ce que je voudrais, c'est par exemple quelque chose du genre:

Item x

Item Y (qui a une variable, disons, Fou = false; )

Je double clique sur x, qui me donne la possibilité de targeter un Item.

Avec cette target, je clique sur Y. C'est lorsque je "target" Y avec X que je voudrais faire en sorte que la variable Fou, de Y, devienne true. (et ça je sais pas comment le faire)

L'autre chose que je sais pas faire, c'est lorsque la variable Fou de Y devient true, un nouvel Item se créé sur Y (disons)

C'est ça en gros. (en exemples) Very Happy
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

Agir sur une condition Empty
MessageSujet: Re: Agir sur une condition   Agir sur une condition Icon_minipostedLun 6 Oct - 1:12

Oki, je vois.

Dans ton exemple, si l'objet X déclare une Target, lorsqu'il récupère l'Item ciblé, tu peux faire
Code:

if(itemciblé is Y)
{
  Y yciblé = (Y)itemciblé;
  yciblé.Fou = true;
  yciblé.CreateNewItem();
}

Et dans ton objet Y tu crées
Code:

public void CreateNewItem()
{
}
Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

Agir sur une condition Empty
MessageSujet: Re: Agir sur une condition   Agir sur une condition Icon_minipostedLun 6 Oct - 15:04

Merci beaucoup, ça marche très bien. Je te le dirai si j'ai d'Autres problèmes Smile
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Contenu sponsorisé





Agir sur une condition Empty
MessageSujet: Re: Agir sur une condition   Agir sur une condition Icon_miniposted

Revenir en haut Aller en bas
 
Agir sur une condition
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RunUO-FR :: Problèmes et questions :: Comment faire ?-
Sauter vers: