La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2019 23:31:12


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Kotori
Voyageur
Inscrit le: 10 Fév 2010
Messages: 2
Répondre en citant
Posté le : 10/02/2010 06:38:27 Sujet du message : Quelques questions de débutant - Respawn / Porte

Bien le bonjour à tous et à toutes.

Je travaille actuellement sur un module solo sous NWN 1.68 et je suis confronté à quelques soucis, mais surtout plusieurs questions... Après une soirée (Même une nuit je dois dire...) de bidouillages et de prises de tête, je ne suis pas parvenu à faire mon script en entier... J'ai cependant bien avancer ma carte qui possède de nombreuses zones et des customisation différentes, je suis fier de moi ! Je passe à autre chose quand j'ai un blocage, et après étude je recommence. Mais là je bloque vraiment et n'avance plus du tout, d'ou mon appel au secours.

Ahem... C'est mon premier module, mes premiers scripts, hier encore j'apprenais à faire un marchand et à faire des éclairages personnalisés. Je n'ai jamais toucher à langage autre que le Ruby, du coup, je galère un peu même si presque la même chose, un coup de pouce ne serrait pas de refus et je l'espère, me serra accordé.

Respawn : Ondeath.

J'aimerais que le joueur, une fois mort, n'est pas le choix "Respawn" : Je sais comment le faire, seulement j'aimerais imposer une condition : Si le joueur possède l'objet "X", alors le choix de "Respawn" est disponible et il se fait téléporter vers la zone.

-> Ma "Gemme de rappel" marche, elle me téléporte à destination.
-> Quand je meurs, je clique sur "Respawn", je me téléporte vers la même destination.


Tout est fonctionnel sauf le choix "Respawn", je ne sais pas comment le faire disparaitre si l'objet "X" n'est pas dans l'inventaire du personnage, voici un aperçu plus ou moins de ce que j'avais fait dans le script du module "Ondeath" :

NWScript :
if (GetItemPossessedBy(oPC, "GEMMEDERAPPELobjet")== OBJECT_INVALID)
  {
  Ici j'ai essayer plusieurs blabla avec le GUI, en vain.
  return;
  }
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.


Mais cette variable ne marche pas... Pourquoi ? Ou est mon erreur ?

Mon but : La gemme de rappel a un pouvoir unique illimité : Celui de ramener l'utilisateur dans la tour ou il y a un portail (Fonctionnel.), elle ne permet pas le retour et ne marche que dans un seul sens (Fonctionnel.), elle permet une fois mort de respawn dans cette même tour (Fonctionnel.) mais si l'utilisateur n'a pas cette gemme, il est impossible de respawn (Le choix n'apparait pas.) (Erreur.). Cette méthode a pour but d'éviter l'abus de téléportation.

Portes : Fermeture automatique.

Ca m'a l'air d'être simple comme bonjour mais les liens que j'ai trouvé sur le forum concernant ce genre de script sont morts... Ou alors je n'ai pas chercher au bon endroit.

J'aimerais que toutes les portes de mon module se ferme au bout d'un certain temps. N'ayant pas de script à disposition, je ne peux m'inspiré... (Je m'inspire des scripts d'autres modules avant de faire les miens.)

Je n'ai même pas un morceau de script, je pense qu'il se situe dans "OnHeartBeat".


Un script qui fonctionne dans OnOpen pour une fermeture automatique de porte, la porte qui se ferme est celle qui vient de s'ouvrir et il n'y a apparemment pas de soucis de tag. Tester par moi même avec des portes ayant le même tag :

NWScript :

//OnOpen
Nvoid main()
{

object oPC = GetLastOpenedBy();

if (!GetIsPC(oPC)) return;

DelayCommand (90.0, ActionCloseDoor(OBJECT_SELF));

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

Remplacez 90.0 par le nombre de secondes que vous désirez avant une fermeture.

Coffre : Respawn du contenu automatique.

La même chose je présume... Cela doit être facile d'accés et les liens sont morts. J'ai cru comprendre que je devais chercher sur le vault mais j'ai eu le droit à une "page not found" : J'aimerais que mes coffres après un certain temps, est de nouveau du contenu.

Je pense que comme la porte, il y a un morceau dans "OnHeartBeat", et pourquoi pas dans "OnOpen".

Monstres : Loot

Mes monstres laissent un corps détroussable, oui mais il n'y a rien à l'intérieur... Mes "hommes lézard" (Custom.) peuvent lâcher leurs armes ("Abandon possible") mais rien d'autres... Il y a t-il un moyen de configurer -A la manière d'un (MMO)RPG-, une table de loot pour les monstres ?

Autres :

Et bien non, en fouinant en même temps que je postais ce message, j'ai trouvé ce lien et je dois dire que j'ai pas mal de lecture à faire, même si je pense qu'une petite sieste me ferrait du bien (Il se fait tôt !), j'ai également trouver comment enlever les spawns de coffre aléatoires.

Si vous avez des modules / campagnes dont je pourrais tirer quelques informations, n'hésitez pas à me donner des noms, j'apprend mieux en regardant les scripts des autres modules.

Voila... En espérant avoir une réponse, je suis ouvert à toutes questions et reste disponible. Désolé d'avance si certaines questions sont stupides et/ou manques de précisions, ainsi que pour le post très long, demain je recherchais encore, je pense qu'après la sieste et le petit déjeuner, je serrais dans de meilleure condition de travail !

Bonne journée !
Dernière édition par Kotori le 12/02/2010 15:18:42; édité 2 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jez
Acolyte
Inscrit le: 08 Juin 2007
Messages: 31
Localisation: Dans les étoiles
Répondre en citant
Posté le : 11/02/2010 11:24:48 Sujet du message :

Bonjour,

tout d'abord je te conseille ces 2 outils pour ainsi dire indispensables:

NWN lexicon, la bible des fonctions de script de nwn: [http]

Lilac soul script generator: ce programme génial te permettra de créér la majorité de tes scripts "simples" en quelques secondes, et te donnera des exemples pratiques de scripting: [http]


Sinon, rapidement, pour les portes, la méthode la plus souvent utilisée est de simplement mettre un delaycommand dans le OnOpen, qui dit a la porte de se fermer après x secondes.

Pour les coffres regarde les scripts des placeables de trésors d'origine, NWN contient deja toute une batterie de script de creation de trésors. Si tu veux ajouter un respawn de trésor, tu peux facilement modifier ces scripts en leur rajoutant un DelayCommand et peut être aussi une vérification que le contenant a deja spawné son trésor (avec une variable) qui sera remise a zero avec le DelayCommand.

Bon TP!
_________________
Whitefall, Post-Apo futuriste pour NWN1 *en pause*
Mes créations pour NWN1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Kotori
Voyageur
Inscrit le: 10 Fév 2010
Messages: 2
Répondre en citant
Posté le : 12/02/2010 14:58:48 Sujet du message :


Jez a écrit :
Bonjour,

tout d'abord je te conseille ces 2 outils pour ainsi dire indispensables:

NWN lexicon, la bible des fonctions de script de nwn: [http]

Lilac soul script generator: ce programme génial te permettra de créér la majorité de tes scripts "simples" en quelques secondes, et te donnera des exemples pratiques de scripting: [http]


Sinon, rapidement, pour les portes, la méthode la plus souvent utilisée est de simplement mettre un delaycommand dans le OnOpen, qui dit a la porte de se fermer après x secondes.

Pour les coffres regarde les scripts des placeables de trésors d'origine, NWN contient deja toute une batterie de script de creation de trésors. Si tu veux ajouter un respawn de trésor, tu peux facilement modifier ces scripts en leur rajoutant un DelayCommand et peut être aussi une vérification que le contenant a deja spawné son trésor (avec une variable) qui sera remise a zero avec le DelayCommand.

Bon TP!
Merci pour le programme ! Il a l'air complet en effet et je le télécharge directement ! Pour "Lilac Soul's NWN Script Generator V2.3", je l'avais déjà téléchargé, il a l'air d'être utilisé parce que dans certains modules que j'ai ouvert, il y avait le fameux "Created by Lilac Soul's NWN Script Generator, v. 2.3", ce qui m'a permis de rechercher ce programme. (D'ailleurs merci au auteurs honnêtes qui laisse la trace du programme.)

J'ignorais que c'était aussi simple pour les coffres, je pense copier un des scripts de coffre pour en faire un nouveau (Ou plusieurs.), de plus c'est très-très bien expliqué. Si c'est la bonne ligne bien entendu :

NWScript :
// Generate random, disposeable treasure on the container
// oContainer - Valid object with inventory
// oOpener    - The one who opened the container
// nClass - Treasure Class (X2_DTS_CLASS_*)
// nType  - Treasure Type  (X2_DTS_TYPE_*), default = X2_DTS_TYPE_DISPOSEABLE | X2_DTS_TYPE_GOLD
//          Values: X2_DTS_TYPE_DISPOSEABLE - Potions, Kits, etc
//                  X2_DTS_TYPE_AMMO        - Ammunition
//                  X2_DTS_TYPE_GOLD        - Gold and Gems
//                  X2_DTS_TYPE_ITEM    - Character Optimized treasure (ignores treasure class)
// Example:
//    Generate Low Class Ammo and Gold+Gems
//    DTSGenerateTreasureOnContainer (oChest, X2_DTS_CLASS_LOW, X2_DTS_TYPE_AMMO | X2_DTS_TYPE_GOLD);
void DTSGenerateTreasureOnContainer (object oContainer, object oOpener, int nClass, int nType = 5)
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.


- Une chose m'échappe, si je veux que le coffre contienne des objets personnalisé, comment faire ? La commande prend en compte tout les objets ou pas ?

Je testerais cela dans quelques heures.

Cependant pour les portes, concernant les delay, j'ai lu dans un des topics quelque chose sur les secondes, comme quoi il y avait "secondes dans le jeu" et "secondes dans la vrai vie", je suis totalement embrouillé désormais dans les temps à cause de cela.

Mes "propriétés de temps" :



Le script que je vien de faire :
EDIT 12/02 à 15h05, il fonctionne très bien, merci à toi !

NWScript :

//OnOpen
Nvoid main()
{

object oPC = GetLastOpenedBy();

if (!GetIsPC(oPC)) return;

DelayCommand (90.0, ActionCloseDoor(OBJECT_SELF));

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


J'aimerais que la porte se ferme au bout de une minute trente, soit 90 secondes.
J'espère ne pas m'être trompé, j'essayerais en après midi.

- Si les secondes de DelayCommand sont des secondes de jeu, quel est le calcul à faire pour trouver combien de millisecondes valent une seconde de vrai vie ? Je suis très mauvais en mathématiques.

~> Dans mon temps, 10 minutes = 1 heure. Donc 60 minutes (1 heures dans la véritable vie.) est égale à 6 heures dans le jeu, c'est bien cela ? Je sais le faire dans ce sens dans ce cas mais dans l'autre... Ahem.

Il faut que j'essaye aussi sur NWN 1.69, il y a des tilesets très intéressant (Je trouve.) et j'espère qu'il n'y aura pas de soucis de compatibilité, si c'est le cas, je serrais très ennuyé.

Merci pour les tuyaux !

EDIT 12/02, 19h58 :

Une question sauvage apparait ! ...
Ahem, j'aimerais améliorer le script de porte :

NWScript :

//OnOpen
Nvoid main()
{

object oPC = GetLastOpenedBy();

if (!GetIsPC(oPC)) return;

DelayCommand (90.0, ActionCloseDoor(OBJECT_SELF));

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


J'aimerais qu'une fois la porte refermée, elle se verrouille à nouveau... Avec une clé ! J'ai vu pas mal de script concernant le reverrouillage de coffre mais je n'ai pas réussi à refaire / copier le script pour une porte... Dans OnOpen j'ai mon script qui ferme la porte après X secondes mais dans OnClose, OnUnlock, etc... Je n'ai pas réussi à modifier quelque chose, il n'y a aucun changement... La porte se referme grâce au script de fermeture automatique mais ne se verrouille pas pour autant... Une petite idée ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jez
Acolyte
Inscrit le: 08 Juin 2007
Messages: 31
Localisation: Dans les étoiles
Répondre en citant
Posté le : 13/02/2010 15:51:59 Sujet du message :

Tu peux "locker" avec plusieurs commandes (cherche Lock dans le NWN Lexicon, et lis un peu tout, il y a plein d'exemples et de notes importantes), mais tu peux par exemple ajouter un autre DelayCommand a 91 seconde dans le même script pour faire un "SetLocked TRUE" (lol ce jargon ^^)

Mais tu pourrais aussi faire un autre script dans le OnClose, qui lockerait la porte automatiquement (mais ca lockerait aussi si cest le pj qui referme la porte).

Tout dépend de ce que tu veux exactement et selon le cas. Note que ce que s'applique a l'ouverture/fermeture des coffres marche aussi pour les portes. Notes aussi que la porte doit avoir la propriétée reverrouillable cochée pour pouvoir être reverouillée.
_________________
Whitefall, Post-Apo futuriste pour NWN1 *en pause*
Mes créations pour NWN1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Master-p
Ecuyer
Inscrit le: 03 Nov 2009
Messages: 42
Localisation: Dans les cieux, une bouteille de rouge a la main regardant le monde courir à sa perte
Répondre en citant
Posté le : 25/06/2010 10:35:33 Sujet du message :

tu est en train donc de le crée ?
_________________
Anges&Démons, serveur persistant action. Deux factions, guerre éternelle !! Enfin bref, venez quoi !! XD
 
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 20.683ms