Plop, je compte étudier stump dorénavant en me basant sur celui de Bouh² version 2.10. En essayant d'ajouter 3 commandes : Teleport, Poutch, AddLevel j'ai toujours le même replyError IG. La réf d'objet n'est pas attribuée. Cependant dans mon code je n'arrive pas a trouver où j'ai merdé. Voici les codes des 3 class. Pour informations lorsque je tape dans le tchat Poutch 25 (l'erreur n'est plus celle précédente mais une erreur de cast.)
public class Teleport : InGameCommand
{
public Teleport()
{
this.Aliases = new[] { "Teleportation" };
this.RequiredRole = RoleEnum.Player;
this.Description = "Cette commande vous permet de vous téléporter dans le monde de Soap";
this.AddParameter<string>("Destination");
}
public override void Execute(GameTrigger trigger)
{
if(!trigger.Character.IsFighting())
{
string input = trigger.Get<string>("Destination");
switch(input.ToUpper())
{
case "SHOP":
TeleportationPlayer(trigger.Character, 54159142, 390);
trigger.Reply("Vous êtes téléporté à l'espace shop.");
break;
case "BOUTIQUE":
TeleportationPlayer(trigger.Character, 76284416, 190);
trigger.Reply("Vous êtes téléporté à l'espace boutique.");
break;
case "PVP":
TeleportationPlayer(trigger.Character, 88212759, 287);
trigger.Reply("Vous êtes téléporté à l'espace pvp");
break;
case "MARIAGE":
TeleportationPlayer(trigger.Character, 99094023, 465);
trigger.Reply("Vous êtes téléporté à l'espace mariage.");
break;
case "ENCLOS":
TeleportationPlayer(trigger.Character, 74711552, 190);
trigger.Reply("Vous êtes téléporté à l'espace enclos.");
break;
default:
trigger.ReplyError("La saisie est incorrecte, les commandes disponibles sont :.Tp shop /.Tp boutique /.Tp pvp /.Tp mariage /.Tp enclos");
break;
}
}
}
public static void TeleportationPlayer(Character player, int mapid, short cellid)
{
player.Teleport(new ObjectPosition(World.Instance.GetMap(mapid), cellid));
public class Poutch : InGameCommand
{
public Poutch()
{
this.Aliases = new[] { "Poutch" };
this.RequiredRole = Stump.DofusProtocol.Enums.RoleEnum.Player;
this.Description = "Cette commande permet de lancer un combat contre un poutch. Les niveaux disponibles sont : 1,25,50,75,100";
this.AddParameter<string>("Level");
}
public override void Execute(GameTrigger trigger)
{
if (!trigger.Character.IsFighting())
{
var input = trigger.Get<short>("Level");
switch (input)
{
case 1:
this.MonsterSpawn(trigger, 1);
trigger.Reply("Vous êtes entré en combat face à un poutch level 1.");
break;
case 25:
this.MonsterSpawn(trigger, 2);
trigger.Reply("Vous êtes entré en combat face à un poutch level 25.");
break;
case 50:
this.MonsterSpawn(trigger, 3);
trigger.Reply("Vous êtes entré en combat face à un poutch level 50.");
break;
case 75:
this.MonsterSpawn(trigger, 4);
trigger.Reply("Vous êtes entré en combat face à un poutch level 75.");
break;
case 100:
this.MonsterSpawn(trigger, 5);
trigger.Reply("Vous êtes entré en combat face à un poutch level 100.");
break;
default:
trigger.ReplyError("La saisie est incorrecte, les niveaux des poutch sont 1, 25, 50, 75 ou 100.");
break;
}
}
else
trigger.ReplyError("Pour lancer cette commande, il faut être en dehors d'un combat.");
}
private void MonsterSpawn(GameTrigger trigger, int grade)
{
Monster monster = new Monster(Singleton<MonsterManager>.Instance.GetMonsterGrade(494, grade), new MonsterGroup(0, trigger.Character.Position));
Fight fight = Singleton<FightManager>.Instance.CreatePvMFight(trigger.Character.Map);
fight.RedTeam.AddFighter(trigger.Character.CreateFighter(fight.RedTeam));
fight.BlueTeam.AddFighter(monster.CreateFighter(fight.BlueTeam));
fight.StartPlacement();
}
}
}
public class AddLevel : InGameCommand
{
private uint _tokens;
public AddLevel()
{
this.Aliases = new[] { "LevelUp" };
this.RequiredRole = Stump.DofusProtocol.Enums.RoleEnum.Player;
this.Description = string.Format("Ajoute un niveau à votre niveau actuel contre {0} tokens, à condition de ne pas être niveau 199.",this._tokens);
}
public override void Execute(GameTrigger trigger)
{
this.LevelUp(trigger);
}
private uint TokenPrice(GameTrigger trigger)
{
if (trigger.Character.Level <= 100)
{
this._tokens = 50;
}
else if (trigger.Character.Level > 100 && trigger.Character.Level <= 150)
{
this._tokens = 100;
}
else if (trigger.Character.Level > 150 && trigger.Character.Level <= 190)
this._tokens = 150;
else
{
this._tokens = 200;
}
return this._tokens;
}
private void LevelUp(GameTrigger trigger)
{
this.TokenPrice(trigger);
if (!trigger.Character.IsFighting() && trigger.Character.Level < 199 && trigger.Character.Inventory.Tokens.Stack >= this._tokens)
{
trigger.Character.Inventory.UnStackItem(trigger.Character.Inventory.Tokens, this._tokens);
trigger.Character.AddOneLevel(); // (this.Character.Level += 1) dans la class Character
}
else
{
if (trigger.Character.Inventory.Tokens != null &&trigger.Character.Inventory.Tokens.Stack < this._tokens)
{
trigger.ReplyError(string.Format("Il vous manque {0} tokens pour pouvoir utiliser cette commande.", (this._tokens - trigger.Character.Inventory.Tokens.Stack)));
}
if (trigger.Character.Level >= 199)
{
trigger.ReplyError("Vous ne respectez pas la condition de level de cette commande.");
}
if (trigger.Character.IsFighting())
{
trigger.ReplyError("Vous ne pouvez pas lancer cette commande en combat.");
}
}
}
}
}
(.poutch 50)
(Error) Raised exception (error-index:2) : Le cast spécifié n'est pas valide.
(Error) Incorrect Command "poutch100". Type commandslist or help for command list.
(.poutch 100)
(Error) Raised exception (error-index:3) : Le cast spécifié n'est pas valide.
(Error) Raised exception (error-index:4) : La référence d'objet n'est pas définie à une instance d'un objet.
(Error) Raised exception (error-index:5) : La référence d'objet n'est pas définie à une instance d'un objet.