Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Pas de riposte

Par Blam le 4/2/2003 à 20:58:59 (#3171547)

Voila j'ai mis dans le OnPhysicalAttacked d'un portail
et le OnSpellCastAt le script suivant


void main()
{
object oPC = GetLastAttacker();
int cSpell = SPELL_FLAME_STRIKE;
int bCheat = 1;
int bInstantSpell = 1;
string sSpeakString = "Oh !";
{
ActionSpeakString(sSpeakString);
ActionCastSpellAtObject(cSpell, oPC, bCheat, bInstantSpell);
}
}


et rien ne se passe, le joueur ne prends pas sa colonne de feu.

Qu'ais-je oublié ?

Par eMRaistlin le 4/2/2003 à 21:09:30 (#3171608)

premiere chose : tu as oublie une variable dans le ActionCastSpell :


void ActionCastSpellAtObject(
int nSpell,
object oTarget,
int nMetaMagic = METAMAGIC_ANY,
int bCheat = FALSE,
int nDomainLevel = 0,
int nProjectilePathType = PROJECTILE_PATH_TYPE_DEFAULT,
int bInstantSpell = FALSE
);


quand tu vois une fonction, definie comme ca, les variables simplement declarées (sans le =...) sont a definir obligatoirement, celle avec un = possendent la valeur apres le signe par defaut. TOUTEFOIS, il ne faut pas zapper leur position :)

Donc, tu dois remettre des parametres par defaut (ou custom) en position 1/2/3 si tu veut modifier la valeur du 4eme parametre, par exemple

Pour ton script, j'aurais mis plusieurs choses en plus :


void main()
{
object oPC = GetLastAttacker();
int cSpell = SPELL_FLAME_STRIKE;
int bCheat = 1;
int bInstantSpell = 1; //Perso, j'aurais mis FALSE, histoire que le PNJ fasse l'anim de casting, mais bon ^^
string sSpeakString = "Oh !";

if (!GetIsPC(oPC)){return;} // cette ligne arrete le script si oPC est pas un PC : economie de temps machine

//{pas besoin de cette accolade (oO)

ClearAllActions(); //ici, je m'assure que le NPC est dispo

ActionSpeakString(sSpeakString);

ActionCastSpellAtObject(cSpell, oPC,METAMAGIC_ANY, bCheat, 0,bInstantSpell); //c'est mieux, la, non? :)

//}pas besoin de cette accolade (oO)
}


Deja, ca devrait être mieux.

Si ca ne marche pas, met cette ligne la sous le actioncastSpell :

SpeakString("Ca devrait marcher pourtant");
afin de verifier si le script va bien a la fin...

curieux

Par Blam le 4/2/2003 à 21:31:11 (#3171749)

avec ton script eM ça marche sauf dans le cas d'un sort jeté sur ce fameux portail, CA ne marche pas sur le OnspellCast. pourtant il peut être détruit par un sort mais ne se défends pas.

et il faut puisque c'est une quête, détruire un portail qui permet a des créatures d'arriver toute les 180 secondes.

Par eMRaistlin le 4/2/2003 à 22:24:58 (#3172058)

j'ai du mal a saisir la notion d'un portail qui se defend... oO

Par Jaha Effect le 5/2/2003 à 2:06:02 (#3173077)

Dans ton OnSpellCast tu dois remplacer oPC par

object oPC = GetLastSpellCaster ();


Jaha Effect :D

Pour la petite histoire

Par Blam le 5/2/2003 à 9:16:32 (#3173729)

C'est un portail qui mène des enfers a.......notre monde, il s'agit d'une quête, pour les mauvais, de l'ouvrir (il a été verrouillé par des méchants paladins), pour des bons de le detruire definitivement, en sachant que ce portail a beaucoup de point de vies et qu'a chaque attaque c'est :
colonne de feu (sur aventurier isolé)
Boule de feu (sur groupe, c'est sa tournée!)
DESTRUCTION si supérieur au niveau 15.


il s'agit d'une quête importante avec un portail intelligent qui tentera même la corruption des paladins (la, Mlle Lys se chargera des scripts)

voila

ha oui
:D
Merci Jaha et eM

JOL Archives 1.0.1
@ JOL / JeuxOnLine