Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > une malediction
une malediction
Par Blam le 30/10/2002 à 15:54:16 (#2441386)
Une malédiction en quelque sorte......
Si quelqun a une solution simple...............................................
Par eMRaistlin le 30/10/2002 à 16:13:36 (#2441558)
void main()
{
object oPC = GetFirstPC();
while (GetIsObjectValid(oPC))
{
if (getLocalInt(oPC,"Malediction")!=1)
{
if (GetMaxHitPoints(oPC) > GetCurrentHitPoints(oPC))
{
if (GetIsObjectValid(GetItemPossessedBy(oPC, "TAG_De_L'objet")))
{
CreateObject("PUNISHER",GetLocation(oPC),FALSE);
SetLocalInt(oPC,"Malediction",1);
}
}
}
oPC = GetNextPC();
}
}
Et bien sur, tu met un script OnRest:
void main()
{
SetLocalInt(GetLastPCRested(),"Malediction",1);
}
pas mal
Par Blam le 30/10/2002 à 16:18:51 (#2441612)
j'aimerais plus cool mais j'ai du mal a mettre en place
"rajout" cela ne fonctionne pas en fait j'ai mis a la place de "punisher" "nw_demon" mais rien n'est invoqué.......
on m'aurais menti ???? :)
merci de ce debut de piste interressant :)
bon boulot
Par eMRaistlin le 30/10/2002 à 16:27:32 (#2441690)
Eventuellement, tu peut creer des trigger sur tes map et mettre ca, mais ca va devenir le bordel.
Eventuellement, tu peut le mettre sur le OnUserDefined, et lancer un appel sur le OnPerception des NPC autours... ou bien sur le OnConversation apres avoir fait un pattern vide (histoire que le NPC reponde a tout, comme ca, des qu'un PC parle, il risque l'invocation.)
Enfin, y'a pas mal de solutions, en fait ^^
Sur tout le module
Par Blam le 30/10/2002 à 16:33:58 (#2441754)
et que, meme sur les degats d'un piège, l'invocation se fasse.....
enfin si on arrive a mettre ca au point
merci.
Par Symphonik le 30/10/2002 à 21:28:00 (#2444141)
apparement c'est le n°1006 pour le definir avec le OnUserDefined.
j'ai pas le temps maintenant de faire de plus amples recherches mais je m'y attaque plus tard....
Par Tyn' le 31/10/2002 à 3:51:16 (#2445945)
Provient du message de Symphonik
Source plz :D
apparement c'est le n°1006 pour le definir avec le OnUserDefined.
Pitié
Par Lys le 31/10/2002 à 12:30:49 (#2447982)
j'en profite pour dénoncer un MJ sans pitié, chez lui l'enfer est infernal et il n'y a pas de sortie..........Au secourss!!!!
Au debut on a trouvé ca marrant toute les depouilles de Paladins, les armures et épées abandonnées, mais tres vite les balors, gardiens balors, seigneurs balors, archivistes balors (niveau 33), et le demi-Dieu des enfers, pff c'est tres dur, un scénario de représaille pour tous les grosbills ( niveaux inferieurs a 18 s'abstenir !)
Un peu de tendresse dans ce monde si..............cruel
Par Amaranthe le 31/10/2002 à 14:14:15 (#2448924)
Provient du message de Tynril
Source plz :D
dans le script on_spawn par défaut.
// CUSTOM USER DEFINED EVENTS
/*
The following settings will allow the user to fire one of the blank user defined events in the NW_D2_DefaultD. Like the
On Spawn In script this script is meant to be customized by the end user to allow for unique behaviors. The user defined
events user 1000 - 1010
*/
//SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1001
//SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1002
//SetSpawnInCondition(NW_FLAG_ATTACK_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1005
//SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1006
//SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1008
//SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1003
//SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1004
//SetSpawnInCondition(NW_FLAG_DEATH_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1007
Par Tynril le 1/11/2002 à 0:05:15 (#2453080)
Provient du message de Amaranthe
Sympa, je connaissais pas... Et on peut récupérer, par exemple sur un UDE 1005, l'attaquant et l'attaqué ?
dans le script on_spawn par défaut.
Par Amaranthe le 1/11/2002 à 11:33:11 (#2454729)
Provient du message de Tynril
Sympa, je connaissais pas... Et on peut récupérer, par exemple sur un UDE 1005, l'attaquant et l'attaqué ?
Bien sur :
L'attaquant : GetLastAttackedBy() de mémoire.
L'attaqué, c'est encore plus simple : OBJECT_SELF.
Par Jedaï le 1/11/2002 à 12:02:24 (#2454887)
Je propose donc une solution qui au max fera quatre test "inutile"
void main()
{
object oItem = GetObjectByTag("TagDeLaMerde");
object oPC;
if (GetIsPC(oPC = GetItemPossessor(oItem)))
{
if (GetMaxHitPoints(oPC) > GetCurrentHitPoints(oPC))
{
if (!GetIsResting(oPC))
{
if(!GetLocalInt(oPC,"Malediction"))
{
CreateObject(OBJECT_TYPE_CREATURE, "PUNISHER",GetLocation(oPC),FALSE);
SetLocalInt(oPC,"Malediction", TRUE);
DelayCommand(60.0, SetLocalInt(oPC,"Malediction", FALSE));
}
}
}
}
}
Je pense qu'avec ça c'est jouable d'utiliser le OnHeartBat : 2 affectations et entre 3 et 7 fonctions toutes les 6 secondes, ça ne tuera aucun ordinateur, même un vieux.:D
De plus je te signale qu'avec ta solution, la malédiction ne se déclenchait qu'une fois, et encore si le PC ne s'était pas reposé avant de se faire blesser !:cool:
Une petite erreur sur le CreateObject() également..
Par eMRaistlin le 1/11/2002 à 12:11:00 (#2454948)
Pour le create... mea culpa ^^ et merci d'avoir corrigé
jedai explique moi ca :)
Par Blam le 1/11/2002 à 12:11:45 (#2454953)
le tag objet de la merde c'est ok c'est celui de l'objet
mais malediction est le tag de quoidequi ?
si PUNISHER est celui de la creature invoqué (c'est bien ca je met a la place de punisher le tag de la creature invoquée) ?
malédiction 'cest le tag de la localisation du possesseur de tagdelamerde ?
suis pas sur a 100%
merci d'avance.
Par eMRaistlin le 1/11/2002 à 12:37:40 (#2455100)
Par contre, effectivement, PUNISHER, c'est le monstre a faire apparaitre... par contre, ce n'est pas le tag dont on a besoin pour punisher, mais son resref (car on ne le dira jamais assez, le Tag n'est reconnu que pour les objet deja present. Le createobject creant un objet nonpresent encore, il faut utiliser son bluprint RESREF, c'est a dire son "code barre" qui va permette de savoir comment creer l'objet, en faisant reference au patron present dans les palettes...)
c'est pas valorisant
Par Blam le 1/11/2002 à 14:14:23 (#2455684)
excellent et ca a le mérite que j'ai compris.......
merci et......encore merci.
en plus cela laisse entrevoir un espoir, celui que je comprenne un jour :)
Posez une question et ce forum vous y répondra !
c'est mon forum préféré (je l'ai déja dit ? )
Par Jedaï le 1/11/2002 à 14:19:59 (#2455720)
void main()
{
object oItem = GetObjectByTag("TagDeLaMerde");//remplacer le tag par le tag de l'item maudit
object oPC;
if (GetIsPC(oPC = GetItemPossessor(oItem)))//verifie que l'item se trouve dans l'inventaire d'un PC
if (GetMaxHitPoints(oPC) > GetCurrentHitPoints(oPC))//que ce PC est blesse
if (!GetIsResting(oPC))//qu'il n'est pas en train de dormir
if(!GetLocalInt(oPC,"Malediction"))//et que la malediction n'a pas agi il y a moins d'une minute (tps reel)
{
//Cree le monstre, remplacer PUNISHER par le RESREF/BLUEPRINT du monstre
CreateObject(OBJECT_TYPE_CREATURE, "PUNISHER",GetLocation(oPC),FALSE);
//Empeche qu'un nouveau monstre soit recree
SetLocalInt(oPC,"Malediction", TRUE);
//Repermet la creation d'un monstre apres une minute
DelayCommand(60.0, SetLocalInt(oPC,"Malediction", FALSE));
}
}
JOL Archives 1.0.1
@ JOL / JeuxOnLine