CasterBrain

Section Française de l'emulateur Dawn of light.

Moderators: Support Team, Other Language Team

CasterBrain

Postby dec » Sun Dec 21, 2008 12:57 pm

Bonjour,
Voila j'essaye de faire des mobs qui castent

Donc je tape bien sur le mob "mob brain DOL.AI.Brain.CasterBrain"
Donc apres le mob info sur la ligne brain c'est bon

Mais il caste pas et n'aggro pas (meme au cac)
le brain Standard cac marche tres bien par contre
Normal ?

manque pas un fichier .cs casterbrain ?

merci
dec
DOL Apprentice
 
Posts: 43
Joined: Tue May 23, 2006 10:47 am

Re: CasterBrain

Postby Graveen » Sun Dec 21, 2008 5:55 pm

ben non sinon tu n'aurais pas pu l'affecter. Et puis c'est compilé donc on ne parle plus de .cs

Regarde dans le code ce que fait le caster brain, tiens.
Image
* pm me to contribute in Dawn of Light: code, database *
User avatar
Graveen
Project Leader
 
Posts: 12660
Joined: Fri Oct 19, 2007 9:22 pm
Location: France

Re: CasterBrain

Postby dec » Sun Dec 21, 2008 6:18 pm

Bon j'ai trouver
en faite au lieu de creer simplement le mob (/mob create)

faillai juste que je fasse (/mob create DOL.GS.Keeps.GuardCaster)
et mettre CasterBrain sur le mob

merci de m'avoir aider.
dec
DOL Apprentice
 
Posts: 43
Joined: Tue May 23, 2006 10:47 am

Re: CasterBrain

Postby Graveen » Sun Dec 21, 2008 8:16 pm

tiens je me souvenais pas de ca mais en gros, si tu utilises le caster brain, il faut le mettre sur une classe qui sache le gérer (et les DOL.GS.Keep.xxx le font on dirait)

Je ne sais pas quelle classe peuvent. Les gardes sont qd meme un peu spécifiques
Image
* pm me to contribute in Dawn of Light: code, database *
User avatar
Graveen
Project Leader
 
Posts: 12660
Joined: Fri Oct 19, 2007 9:22 pm
Location: France

Re: CasterBrain

Postby dec » Sun Dec 21, 2008 9:53 pm

tiens je me souvenais pas de ca mais en gros, si tu utilises le caster brain, il faut le mettre sur une classe qui sache le gérer (et les DOL.GS.Keep.xxx le font on dirait)

Je ne sais pas quelle classe peuvent. Les gardes sont qd meme un peu spécifiques
c'est Keep.GuardCaster je l'ai marquer plus haut
dec
DOL Apprentice
 
Posts: 43
Joined: Tue May 23, 2006 10:47 am

Re: CasterBrain

Postby Graveen » Sun Dec 21, 2008 9:56 pm

je veux dire par là que les clases héritées GameNPC doivent avoir été crées pour ca.

Je pense que toutes les classes DOL.GS.Keepguard peuvent prendre un brain caster/melee/etc..
Image
* pm me to contribute in Dawn of Light: code, database *
User avatar
Graveen
Project Leader
 
Posts: 12660
Joined: Fri Oct 19, 2007 9:22 pm
Location: France

Re: CasterBrain

Postby Talath » Fri Jan 16, 2009 8:35 am

Le brain étant un attribut en vogue ces temps ci, il serait éventuellement intéressant de pouvoir utiliser ces brain caster et melee sur les GameNPC, et de ce fait, sur toutes les classes héritées... (à moins que ce soit déjà possible, dans ce cas, vous excuserez mon intervention...).
Image
Talath
Server Representative
 
Posts: 24
Joined: Mon Aug 27, 2007 5:22 pm

Re: CasterBrain

Postby Graveen » Fri Jan 16, 2009 10:19 am

Il me semble que c'est le cas, vu que le brain gère toute la prise de décision concernant le comportement du joueur.

A vérifier, mais si ca ne fonctionne pas comme ca, c'est a changer effectivement.
Image
* pm me to contribute in Dawn of Light: code, database *
User avatar
Graveen
Project Leader
 
Posts: 12660
Joined: Fri Oct 19, 2007 9:22 pm
Location: France

Re: CasterBrain

Postby Patou » Sat Jan 17, 2009 9:21 am

Oui c'est bien ca , maintenant on peu declencher des cast de multiple facon , tous depend de ce que l'on veux.

voila un exemple de mob qui cast un dot si on le touche au cac
Code: Select all
/*

INSERT INTO `linexspell` (`LineXSpell_ID`, `LineName`, `SpellID`, `Level`, `PackageID`) VALUES
('DOTxxx1', 'Mob Spells', 38015, 46, 'MOB');

INSERT INTO `spell` (`Spell_ID`, `SpellID`, `ClientEffect`, `Icon`, `Name`, `Description`, `Target`, `Range`, `Power`, `CastTime`, `Damage`, `DamageType`, `Type`, `Duration`, `Frequency`, `Pulse`, `PulsePower`, `Radius`, `RecastDelay`, `ResurrectHealth`, `ResurrectMana`, `Value`, `Concentration`, `LifeDrainReturn`, `AmnesiaChance`, `Message1`, `Message2`, `Message3`, `Message4`, `InstrumentRequirement`, `SpellGroup`, `EffectGroup`, `SubSpellID`, `MoveCast`, `Uninterruptible`, `IsPrimary`, `IsSecondary`, `AllowBolt`, `SharedTimerGroup`, `PackageID`, `IsFocus`) VALUES
('MOB_DOTxxxxxxxxxxxxxxx1', 38015, 9671, 9671, 'DOT MOB', 'Inflicts damage to the target repeatly over a given time period.', 'Enemy', 1500, 11, 3, 10, 15, 'DamageOverTime', 24, 20, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 'An acidic cloud surrounds you!', '{0} is surrounded by an acidic cloud!', '', '', 0, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, 0, 'Reaver', 0);


* Niko
*
* Mob qui si il est touché au cac cast un DOT.
*
*/

using System;
using System.Collections;
using System.Reflection;

using DOL;
using DOL.Database;
using DOL.GS;
using DOL.GS.Effects;
using DOL.GS.Movement;
using DOL.GS.PacketHandler;
using DOL.GS.SkillHandler;
using DOL.GS.Spells;
using DOL.GS.Styles;
using log4net;

namespace DOL.GS
{
public class CastDotifCac : GameNPC
{
public CastDotifCac()
: base()
{
}

private static void CastDot(GameNPC npc, GameLiving target)
{
npc.TargetObject = target;
if (target != null && target is GamePlayer)
{
npc.TargetObject = target;
LaunchSpell(46, "Mob Spells", npc);
}
}

private eDamageType degat_crush = eDamageType.Crush;
private eDamageType degat_slash = eDamageType.Slash;
private eDamageType degat_thrust = eDamageType.Thrust;

public override void TakeDamage(GameObject source, eDamageType damageType, int damageAmount, int criticalAmount)
{

GameLiving target = this.TargetObject as GameLiving;

if (damageType == degat_crush || damageType == degat_slash || damageType == degat_thrust)
CastDot(this , target);

base.TakeDamage(source, damageType, damageAmount, criticalAmount);
}

public static void LaunchSpell(int spellLevel, string spellLineName, GameNPC npc)
{
if (npc.TargetObject == null) return;

Spell castSpell = null;
SpellLine castLine = null;

castLine = SkillBase.GetSpellLine(spellLineName);
IList spells = SkillBase.GetSpellList(castLine.KeyName);

foreach (Spell spell in spells)
{
if (spell.Level == spellLevel)
{
castSpell = spell;
break;
}
}

if (npc.AttackState)
npc.StopAttack();

npc.TurnTo(npc.TargetObject);
npc.CastSpell(castSpell, castLine);
}
}
}

sinon Dec pour ton soucis , d'aggro , il te suffit de rajouter ca dans ton Brain :
Code: Select all
if (!Body.AttackState && AggroLevel > 0)
{
CheckPlayerAggro();
CheckNPCAggro();
}

if (IsAggroing)
AttackMostWanted();
Release your scripts!
Image
alias Niko.

Freelance
Patou
DOL Devotee
 
Posts: 323
Joined: Wed Jun 27, 2007 4:22 pm
Website: http://roda.forum-pro.fr
Location: FR

Re: CasterBrain

Postby guillaume » Thu Dec 16, 2010 3:18 pm

"je up le post"

Du coup j'ai tenter de crée un mob et de lui ajouter le brain( DOL.AI.Brain.CasterBrain) et pareil que "Dec" le mob ne réagi pas avec un compte joeur, le mob ne cast pas et ne tape pas au cac malgré qu'il soit aggro .


Et si je fait un /mob create DOL.GS.Keeps.Guardcaster ben sa me fait un garde du coup .
guillaume
DOL Apprentice
 
Posts: 36
Joined: Wed Apr 28, 2010 12:03 pm

Re: CasterBrain

Postby Graveen » Thu Dec 16, 2010 5:30 pm

Utilise un npctemplate avec des sorts, c'est plus simple :)

edit: je sais que je réponds à côté. Mais c'est une partie du code qu'il faudrait défricher sévèrement, et j'ai peur que pour l'instant, ca ne reste en l'état.
Image
* pm me to contribute in Dawn of Light: code, database *
User avatar
Graveen
Project Leader
 
Posts: 12660
Joined: Fri Oct 19, 2007 9:22 pm
Location: France

Re: CasterBrain

Postby guillaume » Tue Jan 04, 2011 11:44 am

Ok du coup j'ai fait comme sa

par contre possible de trouvez une liste pour les "ID" de tout les sorts?

Car la je regarde dans "databaseSpell" et je test un par un les sort :damm: (ig)

Sinon pour les style d'arme sa fonctionne pas ou mauvais id .
guillaume
DOL Apprentice
 
Posts: 36
Joined: Wed Apr 28, 2010 12:03 pm

Re: CasterBrain

Postby Graveen » Tue Jan 04, 2011 12:37 pm

Non, il n'y a pas de stricte correspondance ID client <--> ID sort database. Tu peux neanmoins les classer par classe ou groupe selon le spelltype.
Image
* pm me to contribute in Dawn of Light: code, database *
User avatar
Graveen
Project Leader
 
Posts: 12660
Joined: Fri Oct 19, 2007 9:22 pm
Location: France

Re: CasterBrain

Postby guillaume » Wed Jan 19, 2011 5:05 pm

C'est toujour moi

Voila un deux nouveau problemes, j'ai donner un sort de zone a un mob (dot ae), le sort fonctionne bien vs joueur le truc qui me plait pas, c'est que si un mob se trouve a coter il se prend lui(le mob) aussi le dot de zone.

J'ai un gros bug qui me fait planter le serveur avec un autre type de sort, incantation de pet terre, le mob incante bien plusieurs pet, sauf que les pet ne me touche pas...et empeche un mage de cast (en gros je déco/reco et au retour toujour le bug) obliger de reboot le serveur et virer le spell du mob.

Voila merci de me dire quoi faire si vous avez une idée du prob.
guillaume
DOL Apprentice
 
Posts: 36
Joined: Wed Apr 28, 2010 12:03 pm

Re: CasterBrain

Postby Graveen » Wed Jan 19, 2011 5:42 pm

interessant ton bug. Les deux semblent liés au server rules: IsAllowedToAttack() que tu peux customiser à ta convenance.

Et pour le second, woot. Tu as testé avec le SVN only (sans scripts customs etc... ?) Si oui, je suggère que tu me fasses passer le npctemplate que tu as utilisé, je testerais ça.
Image
* pm me to contribute in Dawn of Light: code, database *
User avatar
Graveen
Project Leader
 
Posts: 12660
Joined: Fri Oct 19, 2007 9:22 pm
Location: France


Return to “%s” Français

Who is online

Users browsing this forum: No registered users and 1 guest