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 23:00:06


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Miltiadesadd
Acolyte
Inscrit le: 11 Jan 2006
Messages: 35
Répondre en citant
Posté le : 11/02/2006 18:27:53 Sujet du message : script pour un bâton de téléport de groupe

Bonsoir à tous, voilà je vous présente mon problème.

je pensais créer un baton qui permette la création d'un potrail de téléportation.

Ce bâton serait à usage unique et créerait un portail visuel qui permmettrait aux dits personnages de se retrouver à l'abri dans une autre zone.
Toutefois, ce portail ne resterait ouvert que 20 secondes et pas une de plus.

voilà j'ai essayé mais je n'y arrive pas Sad


Si quelqu'un pouvait m'aider svp.

merci


ah oui dsl j'oubliais une chose.

ce baton serait donné lors du déclenchement d'un quête via un PNJ.

Comment faire en sorte que cette quête ne puisse être enclenchée qu'une fois par un PJ et non par tous les PJ du module par exemple.

C'est à dire, le 1er PJ parle au PNJ et s'il accepte la quête, il lui donne le baton.
Un autre PJ vient voir le même PNJ mais ce dernier ne propose plus la quête et donc à fortiori ne donne plus la pierre. Sauf si le 1er PJ a refusé la quête.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 11/02/2006 20:26:27 Sujet du message :

A mon avis, il faudrait que l'utilisation de ce baton crée un trigger temporaire, dans l'idéal. Je ne sais pas du tout si c'est faisable par contre.

Pour éviter de donner plusieurs fois le baton à un même PJ, il faut utiliser une variable campagne ("SetCampaign") lorsque la Quête est accomplie.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Miltiadesadd
Acolyte
Inscrit le: 11 Jan 2006
Messages: 35
Répondre en citant
Posté le : 11/02/2006 20:27:52 Sujet du message :

oulà je comprend ce que tu veux dire mais c'est fort compliqué pr moi Sad
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 11/02/2006 21:08:09 Sujet du message :

J'aimerais bien avoir les avis des autres scripteurs pour ce qui est de la création du portail. Comme je ne suis pas sûr de ma proposition, je ne veux pas entrer dans les détails.

Pour ta seconde question, je te conseille d'aller voir les tutoriaux (cf ce sujet). C'est expliqué très en détail, pour ce qui est des Quêtes et des variables.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
marneus
Chevalier
Inscrit le: 17 Oct 2005
Messages: 89
Localisation: devant mon pc ... surment
Répondre en citant
Posté le : 11/02/2006 21:11:19 Sujet du message :

je ne suis pas scripteur , mai je ne pense pas qu'un trigeur soit nessesaire : il suffit que le portail soit cree la ou est le joueur
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 11/02/2006 22:12:51 Sujet du message :

Comment fais tu pour créer ce portail?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Harmelyo
Chevalier
Inscrit le: 06 Oct 2005
Messages: 84
Répondre en citant
Posté le : 11/02/2006 22:52:44 Sujet du message :

Bon... Je pense que 2 possibilités s'offrent face à ce choix, le Trigger est une possibilité et mes maigres compétences à ce niveau ne me permettent guère de pousser sur le sujet. La seconde solution pourrait être la création d'un placable (colonne de lumière ou autre) ayant dans son onUsed une fonction de téléportation vers un WP, dans tout les cas il reste la gestion du temps et là je ne suis pas certain de comment la réalisé, peut être est il possible d'utiliser une fonction du style DelayCommand pour le delete bien que cela me semble guère possible, il faudra surement réaliseer un compteur autrement.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 11/02/2006 23:38:16 Sujet du message :

Oui, l'idée du placable est bonne. A mon avis, c'est plutôt dans ce sens qu'il faut aller.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Miltiadesadd
Acolyte
Inscrit le: 11 Jan 2006
Messages: 35
Répondre en citant
Posté le : 12/02/2006 08:48:18 Sujet du message :

en fait j'explique la raison de cet item.

J'ai crée un dongeon sur 8 niveaux qui augmente en difficulté et ce batôn permettrait au PJ de quitter le dongeon s'il pense qu'il va mourrir.
En revanche il ne pourrait pu entrer ds ce dongeon car la porte est fermée pour de bon ( j'ai fait en sorte que la quête ne soit proposée qu'une fois par reboot )

Mais si je comprends bien , vous pensez que je devrais mettre un ou plusieurs portails dans le dongeon???

merci.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 12/02/2006 10:36:54 Sujet du message :

ce que tu desire est tres simple a réaliser. Dans ce post, je ne te donne que la marche a suivre, je te propose de tenter de scripter toi même les scripts. si tu n'y arrive pas je te donnerais la solution (dison lundi Very Happy).

premierement pour l'item de quete, dans le onactiveitem, la propriété (usage unique) doit designer une cible.
tu recupere la localisation de la cible, ensuite a ce point tu cré un placable "X" (tu connais son tag et son resref, c'est par son resref que tu le crée).
enfin tu place un delaycommande qui detruit le placable au bout de 20 secondes...

deuxièmement :
tu crée dans la palette un placable non statique, utilisable et en intrigue.
Dans le OnUsed du placable, tu teleporte le dernier utilisateur jusqu'a un waypoint que tu aura placer (le lieu de ta téléportation quoi...). rien de plus.

troisièmement : dans le dialogue de ton pnj
Deux branches de dialogue :
- je n'ai plus besoin de vous, des fous ont accepter ma mission suicide ha ! ha ! ha ! (fin du dial)--> script de condition : qu'une variable definie sur le PNJ =1

-Il faut aller visiter un dongeon, reunissez votre equipe et allez au charbon !
---Non merci je ne suis pas fou (fin du dial)
---Oui je veux un max de tunes ! (fin de dial) --> Action Conséquante : Donne le baton de teleportation + definir une variable de type Int que tu place a 1 par exemple sur le PNJ

Donc quand un pj vas voir le PNJ, si quelqun a deja activer la quete, il repondra la première phrase, sinon il proposera automatiquement la quete.
Si pour fixer la variable tu utilise un SetLocalInt, alors on pourra refaire la quete a chaque reboot serveur (si c'est un multijoueur persistant) si tu utilise un SetCampaignInt en utiliant une BDD, alors on ne poura refaire la quete qu'une fois pour toute. Par contre on peu s'arranger pour que ta quete ne soit réalisable declanchable par un joueur qu'une fois seulement.

Aller au taf à présent ! Very Happy
tu nous montre ce que tu a fait, si tu n'y arrive pas, la solution lundi.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 13/02/2006 20:22:00 Sujet du message :

bon c'est de desert de Gobbi ce post...Very Happy

Voici comment c'était trop simple.




Seth de Sombrelune a écrit :

deuxièmement :
tu crée dans la palette un placable non statique, utilisable et en intrigue.
Dans le OnUsed du placable, tu teleporte le dernier utilisateur jusqu'a un waypoint que tu aura placer (le lieu de ta téléportation quoi...). rien de plus.
* Un placable Resref = "portail" Tag = "portail" Intrigue = oui, Utilisable = oui, statique = non
dans le OnUsed du plaçable :
NWScript :
void main()
{
object oPC=GetLastUsedBy(); //on designe l'utilisateur
object oWP=GetWaypointByTag("WP_destination"); // on designe le point de teleportation

AssignCommand(oPC,JumpToObject(oWP));// le pj est teleporter a l'emplacement du WP
}
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.


* 1 WayPoint ayant pour tag "destination" dans la zone de securité.


Seth de Sombrelune a écrit :

premierement pour l'item de quete, dans le onactiveitem, la propriété (usage unique) doit designer une cible.
tu recupere la localisation de la cible, ensuite a ce point tu cré un placable "X" (tu connais son tag et son resref, c'est par son resref que tu le crée).
enfin tu place un delaycommande qui detruit le placable au bout de 20 secondes...
* 1 item : resref = "item" tag = "item" propriété = lancer un sort - pouvoir unique [utilisation unique ]
Créer un script ayant le même nom que l'item (ici "item")
NWScript :
void main()
{
object oItem=GetItemActivated(); //designe l'item active
object oPC=GetItemActivator();//designe le pj qui active l'item
location lTarget=GetItemActivatedTargetLocation(); //designe le point de la cible de l'item

if (GetTag(oItem)=="item")//on verifie que le tag de l'item active est bien celui que l'on veux
    {
        object oPortail=CreateObject(OBJECT_TYPE_PLACEABLE,"portail",lTarget); //on designe le placable que l'on cree au point de la cible de l'item
        DelayCommand(20.0,DestroyObject(oPortail,0.0)); //on detruit le placable au bout de 20 secondes
    }
}
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.





Seth de Sombrelune a écrit :

troisièmement : dans le dialogue de ton pnj
Deux branches de dialogue :
- je n'ai plus besoin de vous, des fous ont accepter ma mission suicide ha ! ha ! ha ! (fin du dial)--> script de condition : qu'une variable definie sur le PNJ =1

-Il faut aller visiter un dongeon, reunissez votre equipe et allez au charbon !
---Non merci je ne suis pas fou (fin du dial)
---Oui je veux un max de tunes ! (fin de dial) --> Action Conséquante : Donne le baton de teleportation + definir une variable de type Int que tu place a 1 par exemple sur le PNJ
le fichier dialogue :
- [propriétaire]je n'ai plus besoin de vous, des fous ont accepter ma mission suicide ha ! ha ! ha ! (fin du dial)
--> script de condition :
NWScript :
int StartingConditional()
{

    // Inspecter variables locales
    if(!(GetLocalInt(GetPCSpeaker(), "quete") == 1))
        return FALSE;

    return TRUE;
}
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.

--> script de conséquance : rien

- [propriétaire]Il faut aller visiter un dongeon, reunissez votre equipe et allez au charbon !
--> script de condition : rien
--> script de conséquance : rien

---Non merci je ne suis pas fou (fin du dial)
--> script de condition : rien
--> script de conséquance : rien
---Oui je veux un max de tunes ! (fin de dial)
--> script de condition : rien
--> script de conséquance :
NWScript :
void main()
{
 
  CreateItemOnObject("item", GetPCSpeaker(), 1);

 
  SetLocalInt(GetPCSpeaker(), "quete", 1);

}
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.



Voilà, un peit effort aurais été aprécié Razz
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Miltiadesadd
Acolyte
Inscrit le: 11 Jan 2006
Messages: 35
Répondre en citant
Posté le : 20/02/2006 20:20:55 Sujet du message :

merci bcp à vous tous.

En plus j'ai trouvé autre chose de sympa pr ça.

On crée un item à usage unique avec un tag précis.

On crée le script de téléport mais attention il doit avoir le même tag que l'item crée.

Ainsi on ne passe pas par le on activate.

J'ai testé et ça marche ^^
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Harmelyo
Chevalier
Inscrit le: 06 Oct 2005
Messages: 84
Répondre en citant
Posté le : 20/02/2006 22:05:15 Sujet du message :

c'est en effet une amélioration apporté par Bioware lors d'un patch relativement recent. Toutefois lorsque j'ai voulut le tester en combinaison avec le OnActivate j'ai eu des surprises... Bref c'est relativement mieux dans le cas d'un module récent(ou revu sans OnActivate). Mais depart mon experience et l'expérience des personnes pour qui j'ai réalisé le script sans Onactivate, cela révèle parfois des biens mauvaises surprises.

Donc les anciens, à moins d'être motivé pour refaire tout le onactivate, reste avec ce dernier.
Les nouveaux peuvent et feraient surement mieux de ce faire plein de petit script (moins lourd à l'appel qu'un script de 2000 lignes avec 400 if qui se suivent...
 
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 53.802ms