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 du moment : -20%
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, ...
Voir le deal
399 €

 

 Simple Target

Aller en bas 
2 participants
AuteurMessage
Scriptiz

Scriptiz


Messages : 102
Date d'inscription : 02/09/2008
Localisation : Belgium

Simple Target Empty
MessageSujet: Simple Target   Simple Target Icon_minipostedMar 2 Sep - 11:11

Target (Tutorial de crystal)

Avant de lire ce Tuto assurer vous d'avoir des base en C# (savoir ce qu'est l'heritage de classe,ce qu'est un constructeur etc) il y a plein de site pour ca.

Donc sous RunUo un Target est un objet (classe) derivé d'une classe principal nommé : Target
pour utiliser une classe Target il faut declarer : using Server.Targeting; au debut de votre fichier.

Donc pour cree votre class il suffit de faire :
Code:
private class MonTarget : Target
{
}

Pour faire le constructeur il suffit de regarder l'aide de RunUo ou on trouve :
Citation :
(ctor) Target( int range, bool allowGround, TargetFlags flags )

Le constructeur de notre target rassemblera a :
Code:
public MonTarget() :  base(10,true,TargetFlags.None)
{
}

Ensuite pour effectuer un code au moment ou le joueur clic sur le target on utilise la méthode OnTarget :

Code:
protected override void OnTarget( Mobile Pj, object o )
{
    // le code
}

Notre classe Target fini donne donc :
Code:
private class MonTarget : Target
{
  public MonTarget() :  base(10,true,TargetFlags.None)
  {
  }

  protected override void OnTarget( Mobile Pj, object o )
  {
    // le code
  }
}

Il suffit de cree un nouvel objet pour l'appeler. par exemple dans le OnDoubleClick d'un objet on aura :
Code:
public override void OnDoubleClick( Mobile Pj )
{
  Pj.Target=new MonTarget();
}

PS : il existe d'autre class target (StaticTarget,LandTarget etc) mais celle la permet de tout faire.
Revenir en haut Aller en bas
http://uoclassic.free.fr/
Gargouille




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

Simple Target Empty
MessageSujet: Re: Simple Target   Simple Target Icon_minipostedSam 13 Sep - 15:03

Dans l'exemple précédent, on voit :

Pj.Target=new MonTarget();

En effet, Mobile déclare une variable Target.

Celà permet aussi d'utiliser une override de :
Code:
protected virtual void OnTargetChange()

Mais il y a également deux méthodes déclarées dans Mobile qui nous intéressent ici : BeginTarget

Donc pour faire une target,

  • soit comme expliqué précédement, on fait sa propre classe héritant de target, dans l'OnTarget de laquelle, on mettra du code,
  • soit on utilise les méthodes de mobile:

Code:

public Target BeginTarget( int range, bool allowGround, TargetFlags flags, TargetCallback callback )
et
public Target BeginTarget( int range, bool allowGround, TargetFlags flags, TargetStateCallback callback, object state )

On les utilise ainsi :
Code:
from.BeginTarget( -1, false, TargetFlags.None, new TargetCallback( DropHolding_OnTarget ) );
ou
from.BeginTarget( -1, false, TargetFlags.None, new TargetStateCallback( AddFriendDoor_OnTarget), door );

Faites une recherche dans les scripts avec BeginTarget ...

C'est plutôt la première qu'on prend, -1 de range, false pour allowground... Et le nom qu'on mettra en argument dans TargetCallback sera le nom de la méthode qui recevra l'objet ciblé.

Cette méthode sera déclarée ainsi :
Code:

private static void DropHolding_OnTarget( Mobile from, object obj )
ou
private static void AddFriendDoor_OnTarget( Mobile from, object targeted, object state )

Et bien sûr le second paramètre reçu, ici object obj ou targeted est un objet représentant l'objet ciblé.

En fonction de ce que vous voulez faire, vous allez traiter cet objet :

Code:
if(obj != null)
{
if (obj is PlayerMobile)
    PlayerMobile pm = (PlayerMobile) obj;
else if (obj is BaseCreature)
    BaseCreature bc = (BaseCreature) obj;
}

Donc, en résumé, soit vous créez votre classe, soit vous faites :

Code:
from.BeginTarget( -1, false, TargetFlags.None, new TargetCallback( MaMethodeAppellee) );

qui appelle la méthode

Code:
private static void MaMethodeAppelee( Mobile from, object obj )
Revenir en haut Aller en bas
 
Simple Target
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RunUO-FR :: Tutoriaux Scripts :: Tutoriaux RunUO-
Sauter vers: