Scriptiz
Messages : 102 Date d'inscription : 02/09/2008 Localisation : Belgium
| Sujet: Simple Target Mar 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. | |
|
Gargouille
Messages : 97 Date d'inscription : 02/09/2008
| Sujet: Re: Simple Target Sam 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 : BeginTargetDonc 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 ) | |
|