View Full Version: Item: Relique du Loup Garou Ancien

RunUO.FR Support > Items > Item: Relique du Loup Garou Ancien


Title: Item: Relique du Loup Garou Ancien
Description: 1er item de la collection DidiWolfman !!


Didi - November 3, 2003 05:57 PM (GMT)
Bonm vala poru apprendre a scripter tranquilement jme suis fixer comem but d'être un spécialiste du loup-garou :P

La stue fut mon premier item, la potion celui en cours et la morsure mon prochain si jme rend la :P

Donc la relique, item/construction/misc/statues ... à la fin


QUOTE
public class StatueWolfman : Item
{
  [Constructable]
  public StatueWolfman() : base(0x139D)
  {
  Weight = 10;
  Name = "Relique du Loup Garou Ancien";
  Hue = 542;
  }
      public override void OnDoubleClick( Mobile from )
      {
if (from.BodyValue == 400 || from.BodyValue == 401)
{
if (from.Mounted)
{
from.SendMessage( "Votre monture s'énerve et vous déconcentre" );
}
else
  {
  from.BodyValue = 182;
  from.HueMod = 542;
  from.Emote("*Se transforme en loup garou*");
  from.Str += 30;
  from.GuildTitle = from.Title;
  from.Title = null;
  from.NameMod = "Loup Garou";
  from.PlaySound( 0x209 );
  from.FixedParticles( 0x375A, 1, 30, 9966, 33, 2, EffectLayer.Head );
  from.FixedParticles( 0x37B9, 1, 30, 9502, 43, 3, EffectLayer.Head );
}
}
else
{
  if (from.BodyValue == 182)
  {
  if (from.Female == true)
  {
  from.BodyValue = 401;
  from.Emote("*Redeviens une femme*");
  }
  if (from.Female ==false)
  {
  from.BodyValue = 400;
  from.Emote("*Redeviens un homme*");
  }
  from.HueMod = -1;
  from.Title = from.GuildTitle;
  from.GuildTitle = null;
  from.NameMod = null;
  from.Str -= 30;
  from.PlaySound( 0x209 );
  from.FixedParticles( 0x375A, 1, 30, 9966, 33, 2, EffectLayer.Head );
  from.FixedParticles( 0x37B9, 1, 30, 9502, 43, 3, EffectLayer.Head );
  }
  else
  {
  from.SendMessage( "Vous devez être humain ou loup-garou pour utiliser la relique." );
  }
}



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

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

  writer.Write((int) 0);
  }

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

  int version = reader.ReadInt();
  }
}


[note: je suis pressé, d'autres elements sajoute dans dautre script je post le reste apres les cours :P]

Didi

Didi - November 3, 2003 09:45 PM (GMT)
La suite:
(chechez le bout en bleufoncer et ajoutez le bout en rouge)

scripts/mobiles/animals/mount/basemount.cs
QUOTE
if ( from.IsBodyMod && !from.Body.IsHuman || from.BodyValue == 182 )
  {
    if ( Core.AOS ) // You cannot ride a mount in your current form.
    from.SendLocalizedMessage( 1062061 );
    else
    from.SendLocalizedMessage( 1061628 ); // You can't do that while polymorphed.

    return;
  }

pour les skill, si vous souhaitez qu'iul ne puisse rien faire suffit d'ajouter une ligne du genre a chauqe skill au bon endroit .. ici par exemple anatomy !
QUOTE
else if ( targeted is Mobile)
    {
                      Mobile targ = (Mobile)targeted;
    if ( from.BodyValue == 182 )
      {
      from.SendMessage( "Il devient très agité en votre présence et vous déconcentre" );
      }
      else {


// Il faut bien-sur fermer le "else" plus bas :P     


    int strMod = targ.Str / 10;
    int dexMod = targ.Dex / 10;


Vala ! Conclusion: C un objet pour débutant :P en gros je ne fait que modifier les props du playermobile et je les remet a leur valeur initiale apres.

A la potion s'ajoute surtout le craftage (Quand tu a trouver comment c'est super easy :P) et le timer ... et peut-etre autre chose car j'en suis au timer :P

En esperant au final en faire une maladie qui se multiplie pâr morsure et qui est lifetime :P

Didi

Kaervek - November 10, 2003 05:49 PM (GMT)
J'avais envie de te faire une tite "boutade" en modifiant le script comme ceci:
CODE
using System;
using Server.Network;
using Server.Items;
using Server.Mobiles;
using Server.Gumps;
using Server.Misc;

namespace Server.Items
{
public class PierreLoupGarrouMal : Item
{
 [Constructable]
 public PierreLoupGarrouMal() : base( 6249 )
 {
  Movable = true;
  Name = "La Pierre de Loufworl";  
  Hue = 1906;
 }
 
 public override void OnDoubleClick( Mobile from )
 {
   
    TimerMalediction002 timer = new TimerMalediction002(from);
    timer.Start();
    from.SendMessage (1161, "Vous avalez la Pierre");
       this.Consume();  
 }
 
 public PierreLoupGarrouMal( 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 TimerMalediction002 : Timer
{
private Mobile mobile;
private PlayerMobile from;
private int t_Nbr2;


public TimerMalediction002(Mobile from ) : base
( TimeSpan.FromMinutes (1.0), TimeSpan.FromMinutes (1.0) )
{
mobile = from;
from = ((PlayerMobile) mobile);
}

protected override void OnTick()
{

t_Nbr2++;
if (t_Nbr2 == 1)
{
 from.BodyValue = 182;
 from.HueMod = 542;
 from.Emote("*Se transforme en loup garou*");
 from.Str += 30;
 from.GuildTitle = from.Title;
 from.Title = null;
 from.NameMod = "Loup Garou";
 from.PlaySound( 0x209 );
 from.FixedParticles( 0x375A, 1, 30, 9966, 33, 2, EffectLayer.Head );
 from.FixedParticles( 0x37B9, 1, 30, 9502, 43, 3, EffectLayer.Head );
 from.SendMessage(1161, "Vous êtes heureux de la puissance nouvellement acquise...");
}
else if (t_Nbr2 == 2)
{
 from.BodyValue = 51;
 from.HueMod = 542;
 from.Emote("*Devient une masse informe*");
 from.Str -= 50;
 from.Dex -= 20;
 from.Int -= 20;
 from.GuildTitle = from.Title;
 from.Title = null;
 from.NameMod = "Gelée Informe";
 from.PlaySound( 0x209 );
 from.FixedParticles( 0x375A, 1, 30, 9966, 33, 2, EffectLayer.Head );
 from.FixedParticles( 0x37B9, 1, 30, 9502, 43, 3, EffectLayer.Head );
 from.SendMessage(1161, "Vous êtes desespéré!  Vous vous retrouvez dans le corps d'une sorte de gelée!");
}
else if (t_Nbr2 == 3)
{
 if (from.Female == true)
   {
  from.BodyValue = 401;
   from.Emote("*Redevient une femme*");
   }
  else if (from.Female ==false)
   {
   from.BodyValue = 400;
   from.Emote("*Redevient un homme*");
   }
   from.HueMod = -1;
  from.Title = from.GuildTitle;
   from.GuildTitle = null;
   from.NameMod = null;
     from.Str += 20;
 from.Dex += 20;
     from.Int += 20;
   from.PlaySound( 0x209 );
   from.FixedParticles( 0x375A, 1, 30, 9966, 33, 2, EffectLayer.Head );
   from.FixedParticles( 0x37B9, 1, 30, 9502, 43, 3, EffectLayer.Head );
 Stop();
 from.SendMessage(1161, "Fort heureusement, les effets n'étaient pas permanents");
}
}


}
}


Bodyvalue 51 = slime

Mais bon, le prob c'est que quand ca arrive au OnTick, (j'ai mis 1 min pour els tests hein, normalement je mettrais 30 min) le server crash... :(

Didi - November 11, 2003 12:39 AM (GMT)
nomal tu incrément une valeur que tu na jamais initialiser ....

Rajoute
CODE

public TimerMalediction002(Mobile from ) : base
( TimeSpan.FromMinutes (1.0), TimeSpan.FromMinutes (1.0) )
{
mobile = from;
from = ((PlayerMobile) mobile);
t_Nbr2 = 0;
}

protected override void OnTick()
{

t_Nbr2++;


pour lobjet ce fut mon premier :P je connaissais meme pas lutilisation du timer quand jai poster ici :P

Kaervek - November 11, 2003 08:26 AM (GMT)
Merci ^^ :D
Nan mais c'était juste pour faire un item qui rend en loup garou puis rend le gars completement ridicule ^^ :P
Je vais faire une série d'items de ce genre, avec des effets nefastes ^^ :P
Heu au fait, question comme ca, tu es le wolfman du forum run uo?
Et tu es Uta?



EDIT: Ca continue à crash a chaque on tick meme en mettant la variable à 0 au depart :(

Didi - November 11, 2003 04:54 PM (GMT)
>Et tu es Uta?
Didi restera toujours Didi ..... Uta je le connais (lui ne le sait meme pas car contrairement a lui jai change de nom :P) mais Didi est pas Uta :P

> question comme ca, tu es le wolfman du forum run uo?
Tu parle celui en anglais ? non jamais mis les pieds :P

> EDIT: Ca continue à crash a chaque on tick meme en mettant la variable à 0 au depart
Etrange .... jessai ce midi :P

Didi - November 11, 2003 05:55 PM (GMT)
hihi jai trouver *tout fier*

voila le code complet :P

CODE
using System;
using Server.Network;
using Server.Items;
using Server.Mobiles;
using Server.Gumps;
using Server.Misc;

namespace Server.Items
{
public class PierreLoupGarrouMal : Item
{
[Constructable]
public PierreLoupGarrouMal() : base( 6249 )
{
 Movable = true;
 Name = "La Pierre de Loufworl";  
 Hue = 1906;
}

public override void OnDoubleClick( Mobile from )
{
 
   TimerMalediction002 timer = new TimerMalediction002(from);
   timer.Start();
   from.SendMessage (1161, "Vous avalez la Pierre");
      this.Consume();  
}

public PierreLoupGarrouMal( 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 TimerMalediction002 : Timer
{
private Mobile m;
private int t_Nbr2;


public TimerMalediction002(Mobile from ) : base
//( TimeSpan.FromMinutes (1.0), TimeSpan.FromMinutes (1.0) )
( TimeSpan.FromSeconds (10.0), TimeSpan.FromSeconds (10.0) )
{
m = from;
}

protected override void OnTick()
{

t_Nbr2++;
if (t_Nbr2 == 1)
{
m.BodyValue = 182;
m.HueMod = 542;
m.Emote("*Se transforme en loup garou*");
m.Str += 30;
m.GuildTitle = m.Title;
m.Title = null;
m.NameMod = "Loup Garou";
m.PlaySound( 0x209 );
m.FixedParticles( 0x375A, 1, 30, 9966, 33, 2, EffectLayer.Head );
m.FixedParticles( 0x37B9, 1, 30, 9502, 43, 3, EffectLayer.Head );
m.SendMessage(1161, "Vous êtes heureux de la puissance nouvellement acquise...");
}
else if (t_Nbr2 == 2)
{
m.BodyValue = 51;
m.HueMod = 542;
m.Emote("*Devient une masse informe*");
m.Str -= 50;
m.Dex -= 20;
m.Int -= 20;
m.GuildTitle = m.Title;
m.Title = null;
m.NameMod = "Gelée Informe";
m.PlaySound( 0x209 );
m.FixedParticles( 0x375A, 1, 30, 9966, 33, 2, EffectLayer.Head );
m.FixedParticles( 0x37B9, 1, 30, 9502, 43, 3, EffectLayer.Head );
m.SendMessage(1161, "Vous êtes desespéré!  Vous vous retrouvez dans le corps d'une sorte de gelée!");
}
else if (t_Nbr2 == 3)
{
if (m.Female == true)
  {
 m.BodyValue = 401;
  m.Emote("*Redevient une femme*");
  }
 else if (m.Female ==false)
  {
  m.BodyValue = 400;
  m.Emote("*Redevient un homme*");
  }
  m.HueMod = -1;
 m.Title = m.GuildTitle;
  m.GuildTitle = null;
  m.NameMod = null;
    m.Str += 20;
m.Dex += 20;
    m.Int += 20;
  m.PlaySound( 0x209 );
  m.FixedParticles( 0x375A, 1, 30, 9966, 33, 2, EffectLayer.Head );
  m.FixedParticles( 0x37B9, 1, 30, 9502, 43, 3, EffectLayer.Head );
Stop();
m.SendMessage(1161, "Fort heureusement, les effets n'étaient pas permanents");
}
}


}


Le malus: le petit bout avec je jeu de mobile et from ne lui a pas plus on dirait ...
et puis en plus comme sa c'est plus simple :P

Note: comme mon server a big crash hier jai du detruire les save de playermobile donc jai un perso tout neuf ... et jai trouver a ton petit script un petit prob :

Si au départ, les stats son plus petites ou éguals à 20, tu te voit attribuer un bonus car le plus bas étant un, tu attribut un bonus de 20 a la fin ... donc 21 devient le plsu pas stat apres avoir avaler la pierre.

Solution: if m.Stat <= 20, tu store: (la valuer de la stat) - 1 dans une variable, et au bonus de la fin tu redonne comem bonus cette variable

Kaervek - November 11, 2003 05:59 PM (GMT)
Merci beaucoup ;)

Sinon pour les stats ca ira, chaque perso commence au grand minimum avec 25 en force ;)
Thx :)

Didi - November 11, 2003 09:24 PM (GMT)
en int et en dex aussi ?

Kaervek - November 12, 2003 05:07 AM (GMT)
Oui mais finalement, après une bone nuit de sommeil, vais ptet prevenir ce prob... Car si j'ai plusieurs items du genre.... :P




Hosted for free by InvisionFree