Les Potions.
Post by Elrohïr/Zarhock,ind - April 30, 2008 at 6:58 PM
Bonjour a tous,je vais tenté de faire un post bien constructif sur mon idée.
Les Alchimistes nous fournissent en potion.Le problème est que,si on a une commande de,par exemple 20 potions de soin,10 d'explosion,5 de poison,30 de cure...dans le sac,on ne s'y retrouve plus et sa prend énormément de temps de tout classé potions par potion,force de potion par force de potion ...
Donc mon idée,pourquoi ne pas faire comme les potions vide,c'est à dire on a 10 potions,elle seront ensemble au lieux d'être éparpillé dans le sac.Et donc on pourra mieux les rangés,utilisé.Je pense que sa pourrait être bénéfique pour tous,autemps les alchimistes que les utilisateurs de potions.
Se que vous en pensez ?
Post by Anonymous - April 30, 2008 at 7:01 PM
C'est possible selon moi si les scripteur s'y mettent un peu.
Je crois qu'en modifiant les hues des bouteilles vides et en leur donnant les effets des potions normales, avec un incrément négatif on pourrait s'en sortir.
Post by Phydias Shaytan, CP - April 30, 2008 at 7:02 PM
Il suffit de changer l'attribut stackable en 1.
Le problème, c'est que la petite barre pour séparer les items est gérée par le client. Sauf que le client ne gère justement pas les popos autre que vides. Donc tu pourras les empiler, mais pas les désempiler.
Solution possible : changer le skin de toutes les popos en popo vide dont la hue a été changée.
Post by Elrog Minh Yu - Mort - - April 30, 2008 at 7:02 PM
*C'est vrai que c'est une bonne idée. *
Post by Koenzell Pandora, Cp - April 30, 2008 at 7:57 PM
Moi j'aime bien avoir mon sac pleinde potion
Ces sur que sa aiderais, mais en tant qu'alchiniste ce peu dire que le rangement des potions ce long, mais, peut etre plus réaliste en tuka je reste neutre...
Post by Yriel Asuryan - April 30, 2008 at 8:00 PM
Edit car il s'est trompé de sujet. A rêvé un sujet ou il était question du poids dans le sac et ne le retrouve plus. Se demande si il devient fou.
Post by Elrohïr/Zarhock,ind - April 30, 2008 at 8:41 PM
Je parle de regroupé les potions comme les buches sont regroupés,comme les minerais/Lingos sont regroupé.
Post by Coordinateur Apoc - April 30, 2008 at 8:52 PM
Ca serait un peu plus compliqué car le stack de potions ne serait plus le même item que la potion seule, donc on double clique et rien ne se passerait. Il faudrait scripter un stack pour chaque type de potion et on en n'a quand même pas mal. Pas très difficille mais assez long pour le petit avantage que ca donnerait.
Post by Anonymous - April 30, 2008 at 8:54 PM
Le pire c'est que sous RunUo 2.0 (selon les scripteurs) Les potions sont toutes stackables de base.
J'ignore si l'on peu extraire simplement le code de RunUo 2 et l'implanter ici?
Post by Willy, Scripteur - May 1, 2008 at 4:49 AM
Non on ne peut pas, c'est completeent différent....sa serasi un reve de devenir en 2.0, mais sa ne se fera pas car on a déja trop de script customisé...et faudrais les revoir un a un...ce qui est infesable!
Désolé a tous!
Post by Phydias Shaytan, CP - May 1, 2008 at 5:24 AM
J'aime bien faire mon chieur, mais voila, ça me fait un peu rire quand vous dites des grosses modifs... Je l'ai déjà fait pour un autre shard et voici donc un exemple du résultat.
Le fichier original de Crépuscule : NightSight.cs :
using System;
using Server;
namespace Server.Items
{
\tpublic class NightSightPotion : BasePotion
\t{
\t\t[Constructable]
\t\tpublic NightSightPotion() : base( 0xF06, PotionEffect.Nightsight )
\t\t{
\t\t}
\t\tpublic NightSightPotion( Serial serial ) : base( serial )
\t\t{
\t\t}
\t\tpublic override void Serialize( GenericWriter writer )
\t\t{
\t\t\tbase.Serialize( writer );
\t\t\twriter.Write( (int) 0 ); // version
\t\t}
\t\tpublic override void Deserialize( GenericReader reader )
\t\t{
\t\t\tbase.Deserialize( reader );
\t\t\tint version = reader.ReadInt();
\t\t}
\t\tpublic override void Drink( Mobile from )
\t\t{
\t\t\tif ( from.BeginAction( typeof( LightCycle ) ) )
\t\t\t{
\t\t\t\tnew LightCycle.NightSightTimer( from ).Start();
\t\t\t\tfrom.LightLevel = Math.Abs( LightCycle.DungeonLevel / 2 );
\t\t\t\tfrom.FixedParticles( 0x376A, 9, 32, 5007, EffectLayer.Waist );
\t\t\t\tfrom.PlaySound( 0x1E3 );
\t\t\t\tBasePotion.PlayDrinkEffect( from );
\t\t\t\tthis.Delete();
\t\t\t}
\t\t\telse
\t\t\t{
\t\t\t\tfrom.SendMessage( "You already have nightsight." );
\t\t\t}
\t\t}
\t}
}
La version Modifiée :
using System;
using Server;
namespace Server.Items
{
\tpublic class NightSightPotion : BasePotion
\t{
\t\t[Constructable]
\t\tpublic NightSightPotion() : this( 1 )
\t\t{
\t\t}
\t\t
\t\t[Constructable]
\t\tpublic NightSightPotion(int amount ) : base( 0xF0E, PotionEffect.Nightsight )
\t\t{
\t\t\tName = "Potion de vision nocturne";
\t\t\tHue = 1169;
\t\t\tAmount = amount;
\t\t}
\t\t
\t\tpublic override Item Dupe( int amount )
\t\t{
\t\t\treturn base.Dupe( new NightSightPotion( amount ), amount );
\t\t}
\t\tpublic NightSightPotion( Serial serial ) : base( serial )
\t\t{
\t\t}
\t\tpublic override void Serialize( GenericWriter writer )
\t\t{
\t\t\tbase.Serialize( writer );
\t\t\twriter.Write( (int) 0 ); // version
\t\t}
\t\tpublic override void Deserialize( GenericReader reader )
\t\t{
\t\t\tbase.Deserialize( reader );
\t\t\tint version = reader.ReadInt();
\t\t}
\t\tpublic override void Drink( Mobile from )
\t\t{
\t\t\tif ( from.BeginAction( typeof( LightCycle ) ) )
\t\t\t{
\t\t\t\tnew LightCycle.NightSightTimer( from ).Start();
\t\t\t\tfrom.LightLevel = LightCycle.DungeonLevel / 2;
\t\t\t\tfrom.FixedParticles( 0x376A, 9, 32, 5007, EffectLayer.Waist );
\t\t\t\tfrom.PlaySound( 0x1E3 );
\t\t\t\tBasePotion.PlayDrinkEffect( from );
\t\t\t\tConsume();
\t\t\t}
\t\t\telse
\t\t\t{
\t\t\t\tfrom.SendMessage( "You already have nightsight." );
\t\t\t}
\t\t}
\t}
}
Et pour les derniers chicaneurs, la modification à apporter dans le BasePotion.cs
\t\tpublic BasePotion( int itemID, PotionEffect effect ) : base( itemID )
\t\t{
\t\t\tm_PotionEffect = effect;
\t\t\tStackable = false;
\t\t\tWeight = 1.0;
\t\t}
Devient :
\t\tpublic BasePotion( int itemID, PotionEffect effect ) : this( itemID, effect, 1 )
\t\t{
\t\t}
\t\tpublic BasePotion( int itemID, PotionEffect effect, int amount ) : base( itemID )
\t\t{
\t\t\tm_PotionEffect = effect;
\t\t\tStackable = true;
\t\t\tWeight = 1.0;
\t\t\tAmount = amount;
\t\t}
En somme :
§ Pour chaque potion
- Rajouter un constructeur et modifier le constructeur existant de chaque potion : changer l'itemID, mettre le nom, un variable amount et la hue
- Rajouter une fonction Dupe
- Dans le drink, remplacer le delete par consume
§ Une seule fois : BasePotion - Modifier le constructeur et rajouter un nouveau constructeur : introduction de amount et mise de stackable à true
Post by Elrohïr/Zarhock,ind - May 1, 2008 at 5:35 AM
wouaw ... je suis bouche bée...
Post by Willy, Scripteur - May 1, 2008 at 5:49 AM
tu l'as essayé sur 1.0 avec les scripts customisés de crepuscule?
Post by Phydias Shaytan, CP - May 1, 2008 at 6:49 AM
Essaye, tu verras que ça tourne.
Le fichier modifié est en Runuo1.0. Quand tu essaye, laisse un constructeur adéquat aux potions non-modifées dans BasePotion.
Et le Serialize est ton ami pour pas te retrouver à supprimer toutes les anciennes potions !
Post by Elrohïr/Zarhock,ind - May 2, 2008 at 4:08 PM
Ou alors pouvoir utilisé les potions directement dans le tonneau de potion(si il est IG)Style je veux boire une potion,double clik sur le tonneau et paf je bois la potion,si je veux l'ouvrir,un clik dessus,la commande apparait et je clik dessu,non?
Post by Ophelie Demildor - May 3, 2008 at 2:35 AM
c,est pas ce qui est deja possible de faire avec le tonneau ? ou presque, il me semble que quand tu double click une bouteille sort et tu peux l'utiliser. Imagine si on double clickait dessus et c'etais du poison? comment utiliser le skill empoisonnement ?
Post by Elrohïr/Zarhock,ind - May 3, 2008 at 4:40 AM
"Crystelle, AdC" wrote: c,est pas ce qui est deja possible de faire avec le tonneau ? ou presque, il me semble que quand tu double click une bouteille sort et tu peux l'utiliser. Imagine si on double clickait dessus et c'etais du poison? comment utiliser le skill empoisonnement ?
Dans un baril ou on met que du poison,on utilise poisoning + clik sur le baril ... c'est tout ...
Post by Phydias Shaytan, CP - May 5, 2008 at 1:23 AM
Tu as essayé de glisser la bouteille sur le baril ou de double-cliquer sur le baril avec des bouteilles vides dans le sac ? Je sais plus comment, mais c'est possible de récupérer le contenu d'un baril dans des fioles.