Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > un bébé brailleur
un bébé brailleur
Par fauxninja le 24/12/2002 Ã 15:20:30 (#2870257)
quand on le prend par exemple, il faudrai qu'il fasse du boukan tout le temps, juska ce qu'on le pose.
c'est possible?
Par coolstar le 24/12/2002 Ã 17:08:00 (#2871147)
/* Script 'bebe_braille' - By coolstar -
Script declanchant un "braillement" en la 'Possession' d'un Item "specifique" ;
A n'appliquer que sur les Items non Equipables (le OnAquireItem ne gerant pas les 'SLOT')...
- A mettre dans le OnAquireItem du Module : */
void main()
{
object oPC = GetModuleItemAcquiredFrom();
object oPossessedBy = GetItemPossessedBy(oPC, "bebe_braille");
// S'exécute aussi longtemps que l'Objet est 'Détenu'
if (GetIsObjectValid(oPossessedBy))
{
AssignCommand(oPC, PlaySound("c_demon_dead"));
DelayCommand(6.0, ExecuteScript("bebe_braille", oPC)); // Renvoie à 'lui-même' (Mise en Boucle)
}
}
EDIT
---------------------
Petit rajout du 'Titre' du Script (pour que les choses soient plus claires!)
---------------------
Par Jedaï le 24/12/2002 à 19:14:50 (#2872246)
Solution en deux scripts (Coolstar, t'as oublié ton script "bébé braille") :
//OnAcquireItem :
void bebeBraille(object oPJ);
void main()
{
object oPC = GetModuleItemAcquiredFrom();
object oAcquired = GetModuleItemAcquired();
if (GetIsPC(oPC) &&
GetTag(oAcquired) == "LeTagDuBebeBraillard")
{
SetLocalInt(oPC, "bBraille", TRUE);
bebeBraille(oPC);
}
}
void bebeBraille(object oPJ)
{
if (GetLocalInt(oPJ, "bBraille"))
{
AssignCommand(oPJ, PlaySound("c_demon_dead"));
DelayCommand(6.0, bebeBraille(oPJ));
}
}
//OnUnAcquireItem :
void main()
{
object oPC = GetModuleItemLostBy();
object oLost = GetModuleItemLost();
if (GetIsPC(oPC) &&
GetTag(oLost) == "LeTagDuBebeBraillard")
{
DeleteLocalInt(oPC, "bBraille");
}
}
Par Théranthil le 24/12/2002 à 19:25:54 (#2872357)
Par coolstar le 25/12/2002 Ã 13:29:46 (#2875726)
;)
Par coolstar le 25/12/2002 Ã 15:05:51 (#2876112)
De fait, Jedaï...:blabla:
Il devient inutile de procéder comme tu le proposes... 1 Script suffit bien (je suis partisan de l'Economie Réflexive!)... Et,
pas besoin de VARIABLES LOCALES systématiques, très cher Informaticien...
Le Script "bebe_braille" est déclenché par le OnAquireItem et est bien "renvoyé à lui-même" ('Mise en Boucle' par l'ExecuteScript - toutes les 6Sec, à l'instar d'un OnHeartBeat!)... et, étant soumis à la 'Condition' GetItemPossessedBy, la 'Mise en Boucle' cesse nécessairement de donner l'Ordre PlaySound d'"Emettre le Braillement" dès lors que la 'Condition' n'est plus Vraie/Valide... Donc... (Faut dire que je teste tout ce que je propose, même si je ne suis pas à l'abri!) :p
...
:merci:
Par Jedaï le 25/12/2002 à 21:58:49 (#2878220)
De plus un joueur particulièrement stoïque (ou masochiste :doute: ) ou ayant débranché le son risque de déclencher plusieurs fois de suite le script bebe_braille, d'enclencher ainsi des répétitions décalées dans le temps et de surcharger le CPU.:(
Aussi ce script, dont l'idée de base est très astucieuse (j'avais pas du tout compris pourquoi tu utilisais GetItemPossessedBy() ;) , très intéressant) est-il plus dangereux que ma proposition.:cool:
Bon,bon, j'avoue que j'adore les variables locales :D
Par ailleurs, les deux scripts que je propose sont de toute façon à intégrer dans un dispositif plus vaste vu leur emplacement : les events OnAcquire et OnUnAcquire sont presque toujours occupés dès que le module prend un peu d'ampleur. Donc ces scripts ne seront pas vraiment à ajouter au module, mais bien plutôt à intégrer.:cool:
Par fauxninja le 26/12/2002 Ã 10:50:51 (#2880507)
PS: ca marche, mais quand on marche avec le bébé ca marche plus.
JOL Archives 1.0.1
@ JOL / JeuxOnLine