La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 17:06:51


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Und3rWorld
Voyageur
Inscrit le: 02 Sep 2005
Messages: 3
Répondre en citant
Posté le : 02/09/2005 22:14:35 Sujet du message : Prob

Bonjour tout le monde je suis un tres gros joueur de Neverwinter Nights et je vien juste de commencer a me mettre sur l'editeur pour cree un module et je voudrai savoir comment faire tirer une catapult qui est activer par un PNJ et que c'est projectil fasse des domage et je supose que je doit me servir de script je voudrait faire la meme chose pour Balliste si quelqu'un pourrait me donner directement le scripte sa serai tres tres gentil de sa par @++ all
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Raudgers
Ecuyer
Inscrit le: 08 Aoû 2005
Messages: 46
Localisation: En furtif à coter de toi...
Répondre en citant
Posté le : 03/09/2005 05:51:51 Sujet du message :

Alors si je comprend bien c'est le PNJ (Personnage non joueur) qui doit activer la catapulte pour qu'elle tire un boulet, car si c'est ça il faut aussi un scrypt sur le PNJ pour qu'il vienne activer la catapulte à un certain moment, donc j'ai besoin de savoir si tu n'a pas fait une ereure dans la demande et si tu est bien sur que c'est le PNJ qui doit activer la catapulte.
_________________
I need your help.Give light to me please.
J'ai besoin de votre aide. Donnez-moi la lumière s'il vous plaît.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Und3rWorld
Voyageur
Inscrit le: 02 Sep 2005
Messages: 3
Répondre en citant
Posté le : 03/09/2005 09:59:53 Sujet du message :

Eu ba en faite je voudrais que se soit un PNJ et qui lactive on va dire a un temps de 10secondes sa veut dire que tout les 10secondes je voudrais que le PNJ l'active et pareil pour des balliste comment je doit mis prendre??
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Lemli
Grand Chevalier
Inscrit le: 28 Aoû 2005
Messages: 114
Répondre en citant
Posté le : 03/09/2005 13:32:18 Sujet du message :

Je pose la même question mais avec un PJ Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Raudgers
Ecuyer
Inscrit le: 08 Aoû 2005
Messages: 46
Localisation: En furtif à coter de toi...
Répondre en citant
Posté le : 03/09/2005 16:12:32 Sujet du message :

Alors avec un PJ ca donne ca :

- OnUsed de la catapulte :

NWScript :
#include "xs_detonate_loc"

int iRandFar=17;
int iRandNear=17;
int iTurnToFaceTarget=FALSE;


void main()
{

object oUser = GetLastUsedBy();

effect eStop = EffectCutsceneParalyze();
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eStop, oUser, 9.0);

int iReloading = GetLocalInt(OBJECT_SELF,"reloading");
if(iReloading==TRUE)
    return;
SetLocalInt(OBJECT_SELF,"reloading",TRUE);

    float fFacing = GetLocalFloat(OBJECT_SELF,"FACING");
    fFacing = GetFacing(OBJECT_SELF);
    SetLocalFloat(OBJECT_SELF,"FACING",fFacing);


vector vMyPos = GetPosition(OBJECT_SELF);

int iRandomDist = Random(iRandFar-iRandNear)+iRandNear;
float fRandomDist =IntToFloat(iRandomDist);
vector vNewPos = vMyPos + (fRandomDist * AngleToVector(fFacing));
location lTarget = Location(GetArea(OBJECT_SELF),vNewPos, 0.0);
float fX_Pos = vNewPos.x;
float fY_Pos = vNewPos.y;

object oCheckZ = GetNearestObjectToLocation(OBJECT_TYPE_ALL,lTarget,1);
vector vNewZCord = GetPosition(oCheckZ);
float fZ_Pos = vNewZCord.z;

vector vFinalLocation = Vector(fX_Pos,fY_Pos,fZ_Pos);
location lFinalTarget = Location(GetArea(OBJECT_SELF),vFinalLocation, 0.0);

if(iTurnToFaceTarget==TRUE)
    SetFacingPoint(vFinalLocation);

float fRange = GetDistanceBetweenLocations(lTarget, GetLocation(OBJECT_SELF));
float fDelay = fRange / 12.0;

AssignCommand(OBJECT_SELF, ActionCastFakeSpellAtLocation(SPELL_FIREBALL, lFinalTarget, PROJECTILE_PATH_TYPE_BALLISTIC));
PlaySound("sim_explsun");
DelayCommand(fDelay, BlastArea(lFinalTarget));
DelayCommand(fDelay, SetLocalInt(OBJECT_SELF,"reloading",FALSE));
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.





- OnUserDefined


NWScript :
#include "NW_I0_SPELLS"

effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_BUMP);
effect eDark = EffectVisualEffect(VFX_DUR_DARKNESS);
effect eBoom = EffectVisualEffect(VFX_FNF_FIREBALL,FALSE);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
effect eFire = EffectVisualEffect(VFX_IMP_PULSE_FIRE);
effect knockdown = EffectKnockdown();
effect dazed = EffectDazed();
effect eSmoke = EffectVisualEffect(320);
effect eDebris = EffectVisualEffect(354);
effect eDam;
float fDelay;
int nDamage;
effect eDest = EffectDeath();
object oDetinator = GetLocalObject(OBJECT_SELF, "GZ_OBJECT_ACTIVATOR");
int iRoll6 = d6(10);
int iRoll5 = d6(15);
int iRoll4 = d6(20);
int iRoll3 = d6(25);
int iRoll2 = d6(30);
int iRoll1 = d6(30);

void BlastArea(location lLoc);

void Knock_Down(location lLoc)
{
object oPC = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lLoc, TRUE, OBJECT_TYPE_CREATURE);
while (GetIsObjectValid(oPC))
      {
        int iKnock = d10();
        float fKnock = IntToFloat(iKnock);
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, knockdown, oPC, fKnock);
        SetLocalInt(oPC, "Blast_Radius",6);
        SetIsTemporaryEnemy(oDetinator, oPC, FALSE);
        oPC = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lLoc, TRUE, OBJECT_TYPE_CREATURE);
      }
}

void Assign_Damage(location lLoc, float fRadius, int iBlastEffect)
{
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, fRadius, lLoc, TRUE, OBJECT_TYPE_CREATURE);
    while (GetIsObjectValid(oTarget))
          {
          if (!GetPlotFlag(oTarget))
              SetLocalInt(oTarget, "Blast_Radius", iBlastEffect);
          oTarget = GetNextObjectInShape(SHAPE_SPHERE, fRadius, lLoc, TRUE, OBJECT_TYPE_CREATURE);
          }
}

void Do_Damage(location lLoc)
{
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
    while (GetIsObjectValid(oTarget))
    {
        if (!GetPlotFlag(oTarget))
          {
            int iDamageApply = GetLocalInt(oTarget, "Blast_Radius");
            fDelay = GetDistanceBetweenLocations(lLoc, GetLocation(oTarget))/20;
            if (GetObjectType(oTarget) == OBJECT_TYPE_DOOR)
                nDamage = GetCurrentHitPoints(oTarget)+1;
            if (GetTag(oTarget) == "XS_BOULDER")
                nDamage = GetCurrentHitPoints(oTarget)+1;
            else if (GetTag(oTarget) =="gz_obj_pkeg")
                    nDamage = d6(2);
            else if (iDamageApply==6)
                    nDamage = iRoll6;
            else if (iDamageApply==5)
                    nDamage = iRoll5;
            else if (iDamageApply==4)
                    nDamage = iRoll4;
            else if (iDamageApply==3)
                    nDamage = iRoll3;
            else if (iDamageApply==2)
                    nDamage = iRoll2;
            else if (iDamageApply==1)
                    nDamage = iRoll1;
            else nDamage = 0;

                nDamage = GetReflexAdjustedDamage(nDamage, oTarget, 40, SAVING_THROW_TYPE_SONIC); //GetSpellSaveDC()
                eDam = EffectDamage(nDamage, DAMAGE_TYPE_SONIC);
                if(nDamage > 0 )
                  {
                  DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
                  DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
                  }
            DeleteLocalInt(oTarget, "Blast_Radius");
          }
    oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
    }
}

void BlastArea(location lLoc)
{

    ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eBoom, lLoc);

    DelayCommand(0.3f,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eDest,lLoc));
    ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eDark,lLoc,0.5);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFire, lLoc);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eDebris, lLoc);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eDebris, lLoc);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eDebris, lLoc);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eDebris, lLoc);
    PlaySound("sim_explsun");
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eShake, lLoc);
    Knock_Down(lLoc);
    Assign_Damage(lLoc, RADIUS_SIZE_GARGANTUAN, 5);
    Assign_Damage(lLoc, RADIUS_SIZE_HUGE, 4);
    Assign_Damage(lLoc, RADIUS_SIZE_LARGE, 3);
    Assign_Damage(lLoc, RADIUS_SIZE_MEDIUM, 2);
    Assign_Damage(lLoc, RADIUS_SIZE_SMALL, 1);
    Do_Damage(lLoc);
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



Alors celuila il va pas le compiler, ne t' inquiete pas c'est normal tu le save avec le nom "xs_detonate_loc" et tout ira bien, d'apres mes testes ca marche impec.(Je me suis permit de rajouter un timing de 9 secondes entre chaque utilisation pour éviter le spam).

Bon je regarde ce que je peut fair pour la personne qui veut qu'elle tire toute les 10 secondes.
_________________
I need your help.Give light to me please.
J'ai besoin de votre aide. Donnez-moi la lumière s'il vous plaît.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 65.315ms