Bon voilà, je remets le code ici car il est perdu dans plusieurs posts
.
En fait la tu fais un copier/coller sur un script vierge.
tu le sauvegarde en le nommant comme tu veux.
Après, tu te crées un NPC . Et dans les propriétés, dans l'onglet OnHeartbeat (trigger) , tu mets le nom du script que tu viens de sauvegarder ou tu vas chercher dans la liste. Tu sauvegardes tout.
Et voilà
,
Bon dès que je rentre ce soir, je peux vous faire un petit pack car je ne l'ai plus sur mon DD ni sur mon site.
Je ne pensais pas que ce script aurait été utilisé lol
Enfin j'espère que tu as mieux compris. Désolé si j'ai fais peut être une explication simpliste pour ceux qui connaissent un peu nwn, mais j'ai voulu être le plus simple possible pour que même une personne qui ne connaît pas du tout puisse le faire.
Donc je m'excuse d'avance
@ bientôt,
RAT
//::///////////////////////////////////////////////
//:: Default On Heartbeat
//:: NW_C2_DEFAULT1
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This script will have people perform default
animations.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Nov 23, 2001
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Modifie par: RAT
//:://////////////////////////////////////////////
#include "NW_I0_GENERIC"
void main()
{
if(GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY))
{
if(TalentAdvancedBuff(40.0))
{
SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY, FALSE);
return;
}
}
if(GetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING))
{
int nDay = FALSE;
if(GetIsDay() || GetIsDawn())
{
nDay = TRUE;
}
if(GetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT") != nDay)
{
if(nDay == TRUE)
{
SetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT", TRUE);
}
else
{
SetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT", FALSE);
}
WalkWayPoints();
}
}
if(!GetHasEffect(EFFECT_TYPE_SLEEP))
{
if(!GetIsPostOrWalking())
{
if(!GetIsObjectValid(GetAttemptedAttackTarget()) && !GetIsObjectValid(GetAttemptedSpellTarget()))
{
if(!GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN)))
{
if(!GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) && !IsInConversation(OBJECT_SELF))
{
if(GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS) || GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN))
{
PlayMobileAmbientAnimations();
}
else if(GetIsEncounterCreature() &&
!GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN)))
{
PlayMobileAmbientAnimations();
}
else if(GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS) &&
!GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN)))
{
PlayImmobileAmbientAnimations();
}
}
else
{
DetermineSpecialBehavior();
}
}
else
{
//DetermineCombatRound();
}
}
}
}
else
{
if(GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT))
{
effect eVis = EffectVisualEffect(VFX_IMP_SLEEP);
if(d10() > 6)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
}
}
}
if(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT))
{
SignalEvent(OBJECT_SELF, EventUserDefined(1001));
}
//:://////////////////////////////////////////////
//:: Cree par :RAT
//:: script permettant de faire les nettoyeux publics sur un module
//:: ils rammassent les objets qu'ils peuvent voir
//:: et le detruisent dans leur inventaire
//:: Mettre les NPC en perception longue
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Declaration des variables
//:://////////////////////////////////////////////
object oitem=GetNearestObject(OBJECT_TYPE_ITEM,OBJECT_SELF,1);
object oNPC=OBJECT_SELF;
int inth=1;
float fDuree=60.0; // si vous voulez qu'ils attendent plus d'une minute, vous
// devez changer cette valeur
if (GetIsObjectValid(oitem))
{
if (GetDistanceToObject(oitem)<=20.0) //s'il voit un objet ds un rayon de 20 metres
{
ClearAllActions();
string stag=GetTag(oitem);
if (GetLocalInt(oitem,"BLOKE_EBOUEUR")==0) // verifie si l item possede le tag pour bloquer le NPC
{
DelayCommand(fDuree,SetLocalInt(oitem,"BLOKE_EBOUEUR",1)); // au bout d'une minute , on debloque le NPC
}
else
{
SetLocalInt(oitem,"BLOKE_EBOUEUR",0);
ActionPickUpItem(oitem); // et donc va chercher l'item
object oinvent=GetFirstItemInInventory(OBJECT_SELF); // on regarde le premier objet dans son inventaire
// ActionRandomWalk();
DestroyObject(oinvent,1.0); // et il le supprime
// SendMessageToAllDMs(stag); // message de test
ActionRandomWalk(); // on redemande au NPC de marcher aleatoirement
//break;
}
}
else
{
string stag2=GetTag(oitem); // si le NPC le voit a plus de 20 metre ,
ActionPickUpItem(oitem); //on le deplace, mais il sera rebloquer pendant une minute quand l'item
//rentrera dans son rayon de 20 metres
SetLocalInt(oitem,"BLOKE_EBOUEUR",0);
}
}
else
{
SetLocalInt(oitem,"BLOKE_EBOUEUR",0);
ActionRandomWalk();
}
//:://////////////////////////////////////////////
//:: FIN DU SCRIPT
//:://////////////////////////////////////////////
}