View Full Version: Anneau Annul-KO

RunUO.FR Support > Items > Anneau Annul-KO


Title: Anneau Annul-KO


Kaervek - September 20, 2004 05:50 PM (GMT)
Bon et bien ca faisait longtemps que je n'avais plus offert quelquechose sur ce forum donc voici un petit bijou (anneau) compatible avec tous les serveurs (En effet, sur Astria II on possède beaucoup de scripts uniquement compatibles à notre serveur :P)


Effets de l'anneau:
A la mort du joueur, ce dernier est ressucité s'il portait l'anneau, il récupère son max hits, mana, stamina. L'anneau est alors détruit.


(edit du 22/09/04 pour "OnBeforeDeath" devenu "OnDeath")
Voila le code à mettre ds la partie "OnDeath" du PlayerMobile:
CODE
//////////////ANNEAU ANNUL KO///////
  Item anneau = this.FindItemOnLayer( Layer.Ring );//Ici on regarde si l'objet anneau est à la position "Ring"
  if (anneau is AnneauAnnulKO) // On vérifie que l'anneau en question est bien un AnneauAnnulKO
  {
  this.Resurrect();//On ressucite le pj
  this.Hits = this.HitsMax; //on lui rend ses pv
  this.Mana = this.ManaMax;// On lui rend sa mana
  this.Stam = this.StamMax;// On lui rend sa stamina
  anneau.Delete();
  }



Et voici l'objet en lui même:
CODE

/////////////////////////////////////////////
/////http://www.astria2.com/construction/////
///////===============================///////
///////////////MADE BY KAERVEK///////////////
///////===============================///////
/////http://www.astria2.com/construction/////
/////////////////////////////////////////////

using System;
using Server.Network;
using Server.Items;
using Server.Mobiles;

namespace Server.Items
{
public abstract class Anneau : BaseJewel
{
 public override int BaseGemTypeNumber{ get{ return 1044176; } } // star sapphire ring

 public Anneau( int itemID ) : base( itemID, Layer.Ring )
 {
 LootType = LootType.Newbied;
 }

 public Anneau( Serial serial ) : base( serial )
 {
 }

 public override void Serialize( GenericWriter writer )
 {
  base.Serialize( writer );

  writer.Write( (int) 0 ); // version
 }

 public override void Deserialize( GenericReader reader )
 {
  base.Deserialize( reader );

  int version = reader.ReadInt();
 }
}

public class AnneauAnnulKO : Anneau
{
 [Constructable]
 public AnneauAnnulKO() : base( 0x108a )
 {
  Weight = 1.5;
  Name = "Anneau d'Annul-KO";
  Hue = 45;
 }
 public AnneauAnnulKO( Serial serial ) : base( serial )
 {
 }

 public override void Serialize( GenericWriter writer )
 {
  base.Serialize( writer );

  writer.Write( (int) 0 ); // version
 }

 public override void Deserialize( GenericReader reader )
 {
  base.Deserialize( reader );

  int version = reader.ReadInt();
 }
}


}

Didi - September 20, 2004 11:30 PM (GMT)
Un
CODE
return;
a la fin de ton ajout dans le on before death serait pas necessaire dans le If ? pour eviter les bugs ?

Kaervek - September 21, 2004 03:36 PM (GMT)
Pour éviter quels bugs?

Didi - September 21, 2004 03:45 PM (GMT)
Pour éviter qu'il fasse le reste de la fonction en fait soit .. te tuer :D

Kaervek - September 21, 2004 03:51 PM (GMT)
Oh je vois.... :)

Donc il faudrait faire ceci?:

CODE
//////////////ANNEAU ANNUL KO///////
 Item anneau = this.FindItemOnLayer( Layer.Ring );//Ici on regarde si l'objet anneau est à la position "Ring"
 if (anneau is AnneauAnnulKO) // On vérifie que l'anneau en question est bien un AnneauAnnulKO
 {
 return;
 this.Resurrect();//On ressucite le pj
 this.Hits = this.HitsMax; //on lui rend ses pv
 this.Mana = this.ManaMax;// On lui rend sa mana
 this.Stam = this.StamMax;// On lui rend sa stamina
 anneau.Delete();
 }


Je dois avouer que je ne connais pas bien les return ^^ (Je l'ai déjà dit, je scripte des trucs de fous par bricolage et chance :P)

Didi - September 21, 2004 07:40 PM (GMT)
a la fin de ton truc.

Un return, sa permet d'arreter la fonction, de rien faire ensuite.

En mettant un return, tout se qui sera en dessous ne sera pas fait.

Donc ...

CODE
//////////////ANNEAU ANNUL KO///////
Item anneau = this.FindItemOnLayer( Layer.Ring );//Ici on regarde si l'objet anneau est à la position "Ring"
if (anneau is AnneauAnnulKO) // On vérifie que l'anneau en question est bien un AnneauAnnulKO
{
this.Resurrect();//On ressucite le pj
this.Hits = this.HitsMax; //on lui rend ses pv
this.Mana = this.ManaMax;// On lui rend sa mana
this.Stam = this.StamMax;// On lui rend sa stamina
anneau.Delete();
return;

}

Kaervek - September 21, 2004 07:49 PM (GMT)
Si je mets le return, ca ne compile pas...

QUOTE
- Error: Scripts\slade\scripte de base modifié\PlayerMobile.cs: CS0126: (line
185, column 4) An object of a type convertible to 'bool' is required
Scripts: One or more scripts failed to compile or no script files were found.

slade15 - September 21, 2004 10:11 PM (GMT)
QUOTE (Kaervek @ Sep 21 2004, 08:49 PM)
Si je mets le return, ca ne compile pas...

QUOTE
- Error: Scripts\slade\scripte de base modifié\PlayerMobile.cs: CS0126: (line
185, column 4) An object of a type convertible to 'bool' is required
Scripts: One or more scripts failed to compile or no script files were found.

ce qui est normal car

public override bool OnBeforeDeath()

donc c'est soit return true;
soit return false;

ici je dirai true pour dire que tout c'est bien passé


dans ce qui conserne astria 2 nous n'avant pas que ca dans le OnBeforeDeath donc si on veux mettre un return true ici , fait qu'on deplace tout le bloque
/////////////ANNEAU ANNUL KO///////
a la du OnBeforeDeath() car sinon les autres choses qu'on a ajouté ne sera pas faite non plus, je modifie pas kaer je prefere qu'on teste tout ca avant si ca tombe faut pas mettre de return

Kaervek - September 22, 2004 08:43 AM (GMT)
En fait j'ai mis ce bloc dans le "OnDeath" finalement... Comme ca on est certain qu'il resurrect APRES que le pj soit mort.




Hosted for free by InvisionFree