La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 27/11/2024 05:01:56
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Ton pire cauchemard Ecuyer Messages: 40 |
Bonjour, voilà, j'ai un grave problème avec un script de respawn:
Quand on commence dans mon module, on apparait dans un zone ou l'on choisit parmis 7 divinités ( pour choisir, il faut franchir un portail qui mène dans le temple de la divinité choisie). Je voudrais d'abord dire que quand le joueur respawn, il réapparait dans le temple du Dieu qu'il a choisit en prenant le portail et non dans la zone pout choisir le Dieu. De plus, vu que c'est moi qui héberge mon module, quand je l'étein et que je le relance, les joueurs réapparaissent au point de départ du module, et je voudrais qu'ils réapparaissent au temple de leur Dieu choisit la veille par exemple. Si vous arrivez à m'aider, vous êtes trop puissants... Merci d'avance et Bonne chance ! _________________ =========> Dieu du Script <========= Les îles Oubliées ( LIO_v1.4 ) [http] |
Revenir en haut | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
Dans le temps, on donnait un objet non jetable au perso qui traverse un portail correspondant au Dieu qu'il a choisi, puis dans le OnEnter de la zone de choix on mettait une condition qui vérifiait s'il avait l'objet et je rejettais direct dans la zone correspondante s'il l'avait.
_________________ http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin! |
Revenir en haut | |
Ton pire cauchemard Ecuyer Messages: 40 |
Donc je file l'item (style une pierre d'un Dieu) dès que le gars franchit le portail ? Ensuite je fais un script de rez pour dire que telle personne qui a tel objet respawn dans telle zone? Mais moi, j'avais prit le script de rezpawn de l'histoire, en remplacant le WP par celui de la zone où on choisissait le Dieu. La, le script du scénar. ne peut plus m'aider c'est ca ?
_________________ =========> Dieu du Script <========= Les îles Oubliées ( LIO_v1.4 ) [http] |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Sinon tu utilise une variable Dieu sur chaque joueur (ou item de persistance).
Quand il traverse le portail tu initialise une variable (int où string, par rapport au tag du portail pour réutiliser les 7 fois), ensuite sur le Respawn tu envoie le joueur sur un waypoint par rapport à cette variable. Pareil sur le OnEnter de la zone d'entrée. _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Bon tiens des exemples :
NWScript :
void main() { object oPC = GetLastUsedBy();// On recupere le joueur int iTag = StringToInt(GetTag(OBJECT_SELF)); On cherche le tag du portail (mets 1 pour l'exemple) SetLocalInt(oPC, "Divinite", iTag);// donne l'alliance au joueur grace au tag! } Bon voila la tu as le script pour donner l'alliance à ton joueur. Ensuite dans le respawn tu place cette phrase (je te laisse la placer ^^) : NWScript :
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. Tu mets pareil dans le OnEnter (attention au oPC j'ai pas mit qui c'était!) Bon en gros ces script t'évite d'en faire plein, et en plus de te téléporté facilement sans probleme. Donc il te faut pour cette exemple : - Portail avec comme tag 1,2,3,4,5,6, et 7. - 7 Wayp dans chaque temple avec comme tag dans chaque : WP_DIEU_1, WP_DIEU_2, etc... - Et un peu d'intelligence pour place les scripts Tu peux faire comme moi (mais moi c'est avec bien, neutre, mal) 1 = bien, 2 = mal, 3 = neutre. Jespere que ta compris, @ pluche _________________ [http] |
Revenir en haut | |
Ton pire cauchemard Ecuyer Messages: 40 |
Je vais essayer ca de suite, ca à pas l'air si compliqué (enfin, j'espère ^^)...
Alors : J'ai pigé que le "Object_Self", je le remplace apr le TAG du portail, mais le "divinité", il correspond a quoi ? # Le premier code, je le met dans quoi stp ? # Le deuxième code, il se rajoute au script de respawn ? _________________ =========> Dieu du Script <========= Les îles Oubliées ( LIO_v1.4 ) [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Bon je te redis script par script :
NWScript :
[NWScript]void main() { object oPC = GetLastUsedBy();// On recupere le joueur int iTag = StringToInt(GetTag(OBJECT_SELF));// On cherche le tag du portail (mets 1 pour l'exemple) SetLocalInt(oPC, "Divinite", iTag);// donne l'alliance au joueur grace au tag! } -> OnUsed Ce script tu le mets dans tout les portails qui doivent rendre dans un temple, donc tu mets ce script pour envoyez (par exemple) chez Maman, pareil chez Papa, etc.. tu change pas le OBJECT_SELF, ca évite de faire plein de scripts pour rien! ^^ Alors "Divinite" tu peux le changer par ce que tu veux, si tu prefere, quand le joueur va utilise le portail, il va enclencher une variable, celle ci va se mettre sur le joueur lui même. Donc le joueur ici, recoit la variable Divinite à "Tag du portail" (pour exemple 1). Comme sa si tu veux savoir dans quel divinite est ton joueur tu mets un script de ce genre : NWScript :
void main() { SendMessageToPC(GetLastUsedBy(), ""+GetLocalInt(GetLastUsedBy(), "Divinite"));// Il va dire par rapport au tag du portail dans lequel le joueur est entrer (en exemple 1) } Pour le deuxième script tu le places dans le script original du module du OnRespawn, alors je peux pas te dire ou, car j'ai pas l'éditeur allumé et j'ai supprimé ce script qui me sert à rien . Bref tu cherches vers la fin, il y a une ligne qui représente quelque chose pour téléporte le joueur, tu la supprime et tu mets ma phrase. Au pire tu me redemende et je vais t'aidé un tit peu Black _________________ [http] |
Revenir en haut | |
castorus Acolyte Messages: 23 |
ouais.... c'est une solution black vi mais... je pense qu'il comprendrais mieu ce shéma :
Un joueur entre sur le module. | | V On "regarde" en lui pour savoir si il possède une variable de type texte contenant le nom de l'un des dieu | | V Si il n'en a pas alors on le teleporte au choix des dieux | SINON | V si le joueur contient une variable texte avec le nom d'une divinitée alors on le téléporte au temple du dieu concerné. Bien on va etudier ce systeme simpliste : Cela necessite 1 script par portail pour leur OnUsed respectif + 1 script pour le OnClientEnter. Model pour le OnUsed de chaque portail. Donc evidament a placer et configurer dans chaque OnUsed de portails NWScript :
void main() { object oPC = GetLastUsedBy(); string sNomDieu = "Nom_du_Dieu";/*Choisi une synthaxe precise c'est important pour le OnClientEnter car il emploira une reconnaissance de nom du dieu.*/ string TagWP = "TAG_du_WP_du_Temple_correspondant"; SetCampaignString(GetPCPublicCDKey(oPC),"DIVINITY",sNomDieu); AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag(TagWP)))); } Model pour le OnClientEnter : NWScript : void main() { object oPC = GetEnteringObject(); string WP_Choix = "tag_waypoint_choix_dieu"; /*Remplace tag_waypoint_choix_dieu par le tag du waypoint de la zone ou l'on choisit sa divinitee*/ if(GetCampaignString(GetPCPublicCDKey(oPC),"DIVINITY ")=="") AssignCommand(oPC,JumpToLocation(GetLocation(GetObjectByTag(WP_Choix)))); else if(GetCampaignString(GetPCPublicCDKey(oPC),"DIVINITY")=="NOM_DIVINITE_1") AssignCommand(oPC,JumpToLocation(GetLocation(GetObjectByTag("TAG_WP_TEMPLE_DIVINITE_1")))); else if(GetCampaignString(GetPCPublicCDKey(oPC),"DIVINITY")=="NOM_DIVINITE_2") AssignCommand(oPC,JumpToLocation(GetLocation(GetObjectByTag("TAG_WP_TEMPLE_DIVINITE_2")))); /* else if(GetCampaignString(GetPCPubl icCDKey(oPC),"DIVINITY ")=="NOM_DIVINITE_3 ") AssignCommand(oPC,JumpToLocati on(GetLocation(GetObjectByTag( "TAG_WP_TEMPLE_DIVINITE_3 ")))); else if(GetCampaignString(GetPCPubl icCDKey(oPC),"DIVINITY ")=="NOM_DIVINITE_4 ") AssignCommand(oPC,JumpToLocati on(GetLocation(GetObjectByTag( "TAG_WP_TEMPLE_DIVINITE_4 ")))); else if(GetCampaignString(GetPCPubl icCDKey(oPC),"DIVINITY ")=="NOM_DIVINITE_5 ") AssignCommand(oPC,JumpToLocati on(GetLocation(GetObjectByTag( "TAG_WP_TEMPLE_DIVINITE_5 ")))); else if(GetCampaignString(GetPCPubl icCDKey(oPC),"DIVINITY ")=="NOM_DIVINITE_6 ") AssignCommand(oPC,JumpToLocati on(GetLocation(GetObjectByTag( "TAG_WP_TEMPLE_DIVINITE_6 ")))); else if(GetCampaignString(GetPCPubl icCDKey(oPC),"DIVINITY ")=="NOM_DIVINITE_7 ") AssignCommand(oPC,JumpToLocati on(GetLocation(GetObjectByTag( "TAG_WP_TEMPLE_DIVINITE_7 ")))); */ } |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
|
Revenir en haut | |
Ton pire cauchemard Ecuyer Messages: 40 |
Oui, mais castorus :
J'ai besoin d'un script de respawn ? Je prend celui de Black nan ? Sinon, tes scripts on l'air plus simples... Mais merci beaucoup à Black de m'avoir aidé, et mon problème n'est pas encore résolu ^^.. Donc j'aurai peut-être encore besoin de toi, si tu me propose toujours ton aide, biensûr. _________________ =========> Dieu du Script <========= Les îles Oubliées ( LIO_v1.4 ) [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
|
Revenir en haut | |
Ton pire cauchemard Ecuyer Messages: 40 |
Parcequ'en fait, j'avais prit le script de rez. de l'histoire originale...
Donc avec tous les chapitres et tout. Ce système allait bien jusqu'à cette nouvelle méthode... Donc ^^ Pourriez vous m'aider à en pondre un nouveau ? Parceque là, j'ai essayé de le raccourcir, mais le problème c'est que le PJ qui respawn ne perd ni or, ni XP. Mais surtout ! Il respawn à l'endroit où il meurt... Ce que je veux en fait, c'est que le PJ perde 10% de son or, 100 XP par lvl, et respawn dans le temple de son Dieu, choisit lors de la première connection... Merci de m'aider xD ^^ ! _________________ =========> Dieu du Script <========= Les îles Oubliées ( LIO_v1.4 ) [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
*j'aide pourquoi moi?*
Bon, on va faire étape par étape ok ^^ : 1) tu crées X portails (X = nombre de dieu) 2) dans les portails tu mets en tag un nombre de 1 à X (X = nombre de portail). Attention pas deux fois le même nombre! 3) dans tous ces portails tu mets le même script, qui est celui-ci : NWScript :
void main() { object oPC = GetLastUsedBy(); int iTag = StringToInt(GetTag(OBJECT_SELF)); SetLocalInt(oPC, "Divinite", iTag); //AssignCommand(oPC, JumpToLocation(GetLocation(Get WaypointByTag("Divinite_& quot;+GetTag(OBJECT_SELF))))); } Info : ce script va prendre le tag du portail est l'ajouté dans une variable au PC pour le faire rentré dans une team. Si tu veux que le perso ce téléporte la ou il doit aller, tu enleve les //. 4) tu crées des waypoints dans les temples. Ces waypoints doivent avoir comme tag Divnite_X (X = le tag du portail qui doit les envoyés ici) 5) tu ouvre le script respawn (celui qui est déjà inclu lors de la création d'un module) et tu remplace tout le script par ça : NWScript :
//:///////////////////////// ///////////////////// //:: Generic On Pressed Respawn Button //:: Copyright (c) 2001 Bioware Corp. //:///////////////////////// //////////////////// /* // * June 1: moved RestoreEffects into plot include */ //:///////////////////////// //////////////////// //:: Created By: Brent //:: Created On: November //:///////////////////////// //////////////////// #include "nw_i0_plot" // * Applies an XP and GP penalty // * to the player respawning void ApplyPenalty(object oDead) { int nXP = GetXP(oDead); int nPenalty = 100 * GetHitDice(oDead); int nHD = GetHitDice(oDead); // * You can not lose a level with this respawning int nMin = ((nHD * (nHD - 1)) / 2) * 1000; int nNewXP = nXP - nPenalty; if (nNewXP < nMin) nNewXP = nMin; SetXP(oDead, nNewXP); int nGoldToTake = FloatToInt(0.10 * GetGold(oDead)); // * a cap of 10 000gp taken from you if (nGoldToTake > 10000) { nGoldToTake = 10000; } AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE)); DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE)); DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE)); } void main() { object oRespawner = GetLastRespawnButtonPresser(); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner); RemoveEffects(oRespawner); string sDestTag = "Divinite_"+IntToString(GetLocalInt(oRespawner, "Divinite")); object oSpawnPoint = GetObjectByTag(sDestTag); AssignCommand(oRespawner,JumpToLocation(GetLocation(oSpawnPoint))); DelayCommand(3.0, ApplyPenalty(oRespawner)); } Maintenant, tu recoit une pénalité de 100 par niveau, 10% de l'or prise, et tu respawn au waypoint Divinite_X (X=portail que le joueur a prit) JESPERE QUE TU AS COMPRIS MON SCRIPT TRES SIMPLE PASQUE SINON JE ME TIRE UNE BALLE DANS LA TÊTE! Merci _________________ [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Dsl pour double-post, mais un bug est dans NWScript du forum je sais pas d'ou ça vient, mais fait gaff a ça :
void main() { object oPC = GetLastUsedBy(); int iTag = StringToInt(GetTag(OBJECT_SELF)); SetLocalInt(oPC, "Divinite", iTag); //AssignCommand(oPC, JumpToLocation(GetLocation(Get WaypointByTag("Divinite_& quot;+GetTag(OBJECT_SELF))))); } sa doit donné ça : void main() { object oPC = GetLastUsedBy(); int iTag = StringToInt(GetTag(OBJECT_SELF)); SetLocalInt(oPC, "Divinite", iTag); //AssignCommand(oPC, JumpToLocation(GetLocation(Get WaypointByTag("Divinite_"+GetTag(OBJECT_SELF))))); } Voila _________________ [http] |
Revenir en haut | |
Ton pire cauchemard Ecuyer Messages: 40 |
Je le met dans quoi le script pour tous les portails ? OnUsed ?
Dans ce script, quand on Utilise un portail, il ne téléporte pas... C'est normale ? Pourtant j'ai enlevé les "//"... Parceque je n'ai strictement rien modifié (a part les //) dans ce script, pareil que dans celui de respawn. _________________ =========> Dieu du Script <========= Les îles Oubliées ( LIO_v1.4 ) [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Alors j'ai re-regarder ce que j'ai écrit et tu peux faire deux solution :
Citation : 4) tu crées des waypoints dans les temples. Ces waypoints doivent avoir comme tag Divnite_X (X = le tag du portail qui doit les envoyés ici) Si tu as fait un copier coller du tag tu remarquera que j'ai fait une faute, donc ça doit donné ça : Divinite_X
Sinon tu change le script des portails par celui-ci, j'ai testé et ça marche pour moi : NWScript :
void main() { object oPC = GetLastUsedBy(); int iTag = StringToInt(GetTag(OBJECT_SELF)); SetLocalInt(oPC, "Divinite", iTag); string iWP = "Divinite_"+GetTag(OBJECT_SELF); DelayCommand(0.5, AssignCommand(oPC, JumpToLocation(GetLocation(GetWaypointByTag(iWP))))); } Aussi n'oublie pas de mettres les Waypoints avant, sinon ça risque de ne pas marcher _________________ [http] |
Revenir en haut | |
Ton pire cauchemard Ecuyer Messages: 40 |
Ca marche, je te remercie du fond du coeur ^^ !
_________________ =========> Dieu du Script <========= Les îles Oubliées ( LIO_v1.4 ) [http] |
Revenir en haut | |
Ton pire cauchemard Ecuyer Messages: 40 |
mais, vu que c'est moi qui héberge le mod. Ya des fois où je dois le déco. Mais vu que le Point de départ est dans la zone Choix de la divinité (avec ts les portails), est-ce que les Pjs apparaitront dans le temple de leur dieu ? Ou à l'endroit ou ils ont déco le dernier coup ?
_________________ =========> Dieu du Script <========= Les îles Oubliées ( LIO_v1.4 ) [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Normalement si tu as rien mit dans le OnEnter du module, il reviendront a l'endroit ou ils ont déco, sauf si c'est un reboot du module, ils seront au debut.
_________________ [http] |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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