Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > ouverture d'un cerceuil
ouverture d'un cerceuil
Par Blam le 3/1/2003 à 15:42:32 (#2935815)
{
object oSummonedDefender = CreateObject(OBJECT_TYPE_CREATURE, "NW_SKELWARR01", lSpawnPoint, FALSE);
}
j'arrive pas a faire arriver un warrior squelette pres de son waypoint !
et la ligne que j'ai posté m'a l'air bizarre.
Par coolstar le 3/1/2003 à 15:46:50 (#2935850)
Par eMRaistlin le 3/1/2003 à 15:53:11 (#2935904)
et pourquoi déclarer 'CreateObject' comme Variable, là?
pour pouvoir faire des AssignCommand ?? :)
avec ca peut etre ?
Par Blam le 3/1/2003 à 15:54:08 (#2935915)
{
CreateObject(OBJECT_TYPE_CREATURE, sCreature, lLoc);
}
void main()
{
object oCreature = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
if (GetIsObjectValid(oCreature) == TRUE && GetDistanceToObject(oCreature) 90)
{
sCreature = "NW_SKELCHIEF";
}
location lLoc = GetLocation(OBJECT_SELF);
DelayCommand(0.3, ActionCreate(sCreature, lLoc));
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eMind, GetLocation(OBJECT_SELF));
SetPlotFlag(OBJECT_SELF, FALSE);
// DestroyObject(OBJECT_SELF, 0.5); sauf si je veux detruire le //cercueil
}
}
mais comment faire pour que ce script ne s'execute qu'une fois que ce soit dans le onOpen ou le OnDeath ?????????
héhéhé vais bien y arriver (en plus 10% d'etre un chef)
Par Jaha Effect le 3/1/2003 à 16:05:08 (#2936024)
#include "NW_O2_CONINCLUDE"
void main()
{
if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0)
{
return;
}
object oLastOpener = GetLastOpener();
SetEncounterActive (TRUE, GetObjectByTag ("Tagdela rencontre"));
GenerateLowTreasure(oLastOpener, OBJECT_SELF);
SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1);
ShoutDisturbed();
}
Les encounter c'est bon mangez en :)
Jaha Effect :D
Par coolstar le 3/1/2003 à 16:13:46 (#2936093)
Heeuuu... Je vois pas en quoi un 'AssignCommand' sur un 'CreateObject' peu avoir une utilité eMR?? :doute:
Sinon Blam, ce n'est pas pour rien que je te fais remarquer que les 'Create' ne sont gérés qu'avec les 'ResRef'... ton sCreature (le 'sTemplate' à l'origine!) est en MAJUSCULE là, ce qui ne devrait nullement être possible en ce cas... ;)
...
Ca se mange a quel sauce ?
Par Blam le 3/1/2003 à 16:14:22 (#2936103)
Coolstar le script plus haut marche tres bien mais comment puisje faire pour qu'il ne s'execute qu'une fois a l'ouverture ????
Par coolstar le 3/1/2003 à 16:22:04 (#2936170)
Par eMRaistlin le 3/1/2003 à 16:30:18 (#2936245)
Heeuuu... Je vois pas en quoi un 'AssignCommand' sur un 'CreateObject' peu avoir une utilité eMR??
Bein, ca evite de devoir scripter un script de OnSpawn directement...
Imagine, tu veux faire en sorte que le skel, une fois crée, attaque directeemnt le PC... (sans prendre en compte les factions)...
tu fais {
object oSummonedDefender = CreateObject(OBJECT_TYPE_CREATURE, "NW_SKELWARR01", lSpawnPoint, FALSE);
AssignCommand(oSummonedDefender,DetermineCombatround(oPC));
}
Ca t'evite d'avoir a rechercher l'objet une fois celui-ci crée, et ca te permet aussi d'eviter de faie un script de onSpawn pour cette créature...
De plus, et surtout, la ou cela devient Reelement interessant, c'est pour la creation d'objet....
au lieu de faire
CreateItemOnObject("epee_legendaire",oPC,1);
AssignCommand(oPC,ActionEquipItem(GetItemByTag("EPEE_LEGENDAIRE")));
tu fais
object oEpee = CreateItemOnObject("epee_legendaire",oPC,1);
AssignCommand(oPC,ActionEquipItem(oEpee)));
Ca a l'avantage d'etre plus propre, plus sur, et moins couteux en temps machine...
toutefois, ce n'est pas necessaire, je te l'accorde
Par coolstar le 3/1/2003 à 16:42:16 (#2936327)
;)
Par coolstar le 3/1/2003 à 16:44:06 (#2936350)
void ActionCreateCreature(string sCreature, location lLoc)
{
CreateObject(OBJECT_TYPE_CREATURE, sCreature, lLoc);
}
void main()
{
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
object oCercueil = OBJECT_SELF;
location lLoc = GetLocation(oCercueil);
effect eMind = EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD);
string sCreature;
string sVarName = "profanation";
int nDurationType = DURATION_TYPE_INSTANT;
int nPlotFlag = FALSE;
int iValue = TRUE;
int iLocal = GetLocalInt(oCercueil, sVarName) != iValue;
int iValid = GetIsObjectValid(oPC);
int iDistance = GetDistanceToObject(oPC) < 10.0;
if (iLocal && iValid && iDistance)
{
// * 10% chance of a skeleton chief instead
if (Random(10) == 0)
sCreature = "skelchief";
else
sCreature = "skelwarr01";
DelayCommand(0.3, ActionCreateCreature(sCreature, lLoc));
ApplyEffectAtLocation(nDurationType, eMind, lLoc);
SetPlotFlag(oCercueil, nPlotFlag);
// DestroyObject(oObject, 0.5); // En option...
SetLocalInt(oCercueil, sVarName, iValue);
}
}
Marchi
Par Blam le 3/1/2003 à 20:27:48 (#2938099)
Par Jaha Effect le 3/1/2003 à 20:47:54 (#2938226)
[RemoveEffect]Rhoô le lourd[/RemoveEffect] :D
Pourquoi faire compliqué quand on peux faire beaucoup plus simple et flexible. Je le rappel, les encounter dosent les monstres en fonction du niveau du groupe. Ce qui évite les monstres trop dur ou trop simple. :D
Les encounter c'est bon mangez en ;)
Jaha Effect :D
Par coolstar le 4/1/2003 à 13:22:08 (#2942169)
Provient du message de Blam
heureusement que je suis la pour le role de candide sans quoi plas de debat et le forum ramasse les toiles d'araignées
Au plaisir de d'avoir pu aussi te rendre service... :D
PS: Je te charrie mon petit Jaha... A chacun son vice! ;)
Par Jaha Effect le 4/1/2003 à 19:52:31 (#2944993)
Provient du message de coolstar
PS: Je te charrie mon petit Jaha... A chacun son vice! ;)
Je sais mais ça m'éclate ;)
Jaha Effect :D
PS: tiens je suis Roi maintenant
Par coolstar le 4/1/2003 à 20:46:04 (#2945426)
Provient du message de Jaha Effect
PS: tiens je suis Roi maintenant
Pff! C malin ça!! :p
JOL Archives 1.0.1
@ JOL / JeuxOnLine