La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 16/11/2024 00:46:58


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 26/06/2004 19:30:04 Sujet du message : Un portail de recall

Voila un tout petit script (mon premier) qui permet, à partir d'un parchemin de créer un portail puis de s'y téléporter de n'importe où, même si on a changé de zone.

Auparavant, j'ai crée un parchemin que j'ai appelé "Portail", et où j'ai mis "Pouvoir unique" dans les propriétés (au passage, si quelqu'un a une solution pour que le parchemin ai une apparence qu'il me le fasse savoir svp:oops:). J'ai aussi fait "editer copier" sur le "recall_portail" du jeu sans rien changer. J'ai fait la même chose sur la broche en changeant un peu l'apparence et en rendant impossible de le lâcher, cet objet servira de vérificateur.

Ce script est à insérer dans le onActivate du module.

J'aimerais que vous me donniez votre avis, et des suggestions, et pkoi pas aussi des évolutions qu'on pourrait y apporter.

NWScript :
object oItem = GetItemActivated();
string sItem = GetTag( oItem );
object oPlayer = GetItemActivator();
object oTeleporteur = GetObjectByTag( "NW_HEN_DAE1QT" );
object oPossesseur = GetItemPosssessor( oTeleporteur );

if ( sItem == "Portail" )
{
  if ( oPlayer != oPossesseur )
  {
    object oPlayer = GetItemActivator();
    effect eEffect = EffectVisualEffect( VFX_MYSTICAL_EXPLOSION );
    location lPortail = GetLocation( oPlayer );
    object oPortail = CreateObject( OBJECT_TYPE_PLACEABLE, "recall_portal001",lPortail, FALSE, "portail_teleportation" );
    ApplyEffectAtLocation( DURATION_TYPE_TEMPORARY, eEffect, lPortail, 3.0 );
    object oTeleporteur = CreateItemOnObject( "hen_dae1qt001", oPlayer );
  }
  else
  {
    object oPlayer = GetItemActivator();
    object oPortail = GetObjectByTag( "portail_teleportation" );
    effect eEffect = EffectVisual Effect( VFX_IMP_DUST_EXPLOSION );
    location lPlayer = GetLocation( oPlayer );
    location lPortail = GetLocation( oPortail );
    ApplyEffectAtLocation( DURATION_TYPE_TEMPORARY, eEffect, lPlayer, 3.0 );
    AssignCommand( oPlayer, JumpToObject( oPortail ) );
    ApplyEffectAtLocation( DURATION_TYPE_TEMPORARY, eEffect, lPortail, 3.0 );
    DestroyObject( oPortail, 4.0 );
    DestroyObject( oTeleporteur, 0.0 );
  }
}

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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 29/06/2004 09:29:22 Sujet du message :

Pour ceux que ça intéresse, voilà une deuxième version simplifié du script.

Maintenant il suffit juste d'avoir un item qui a la propriété "pouvoir unique sur soi uniquement [utlisation illimitée]

Le script est toujours à copier dans le onActivate du module.

Si vous avez des suggestions...


NWScript :
object oItem = GetItemActivated();
string sItem = GetTag( oItem );
object oPlayer = GetItemActivator();
object oTeleporteur = GetObjectByTag( "Tag_de_votre_teleporteur" );
object oPossesseur = GetItemPosssessor( oTeleporteur );

if ( sItem == "Tag_de_votre_teleporteur" )
{
  if ( GetLocalInt( oTeleporteur, "DejaCree" ) != 1 )
  {
    object oPlayer = GetItemActivator();
    effect eEffect = EffectVisualEffect( VFX_MYSTICAL_EXPLOSION );
    location lPortail = GetLocation( oPlayer );
    object oPortail = CreateObject( OBJECT_TYPE_PLACEABLE, "Tag_de_l'object_correspondant_au_portail",lPortail, FALSE, "portail_teleportation" );
    ApplyEffectAtLocation( DURATION_TYPE_TEMPORARY, eEffect, lPortail, 3.0 );
    SetLocalInt( oTeleporteur, "DejaCree", 1 );
  }
  else
  {
    object oPlayer = GetItemActivator();
    object oPortail = GetObjectByTag( "portail_teleportation" );
    effect eEffect = EffectVisual Effect( VFX_IMP_DUST_EXPLOSION );
    location lPlayer = GetLocation( oPlayer );
    location lPortail = GetLocation( oPortail );
    ApplyEffectAtLocation( DURATION_TYPE_TEMPORARY, eEffect, lPlayer, 2.0 );
    AssignCommand( oPlayer, JumpToObject( oPortail ) );
    ApplyEffectAtLocation( DURATION_TYPE_TEMPORARY, eEffect, lPortail, 2.0 );
    DestroyObject( oPortail, 3.0 );
    SetLocalInt( oTeleporteur, "DejaCree", 0 );
  }
}

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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 57.092ms