
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 30/04/2025 23:08:31
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 |
zogzog59 Grand Chevalier ![]() Messages: 123 |
glop glop à tous .....
Apres des recherches j'ai trouver pleins de scripts assez intéréssant pour mon MOD, mais je n'ai pas trouvé un script pour une pierre de sauvegarde ??!!! si quelqu'un pourrait me donner un script, ou un post de ce forum, pour le script d'une pierre de sauvegarde, qui ce mettrait dans le "Onused" de la pierre, pour permèttre au PJ s' il l'utilise de reconnecter au dernier endroit ou il c'est déconnecté. voilà en vous remerciant! |
Revenir en haut | ![]() ![]() ![]() |
BenGorre Légende vivante ![]() Messages: 301 |
Bonjour bonjour,
Je te fais les scripts en direct alors si ils marchent pas du premier coup ce n'est pas grave. Tu n'auras qu'à me le dire. Dans le OnUsed: NWScript :
void main() { object oUser = GetLastUsedBy(); location lLoc = GetLocation(oUser); SetCampaignLocation("Persistant_locations", "PLOC", oUser, lLoc); } Dans le OnPlayerEnter du module: NWScript :
void main() { object oPC = GetEnteringObject(); location lLoc = GetCampaignLocation("Persistant_locations", "PLOC", oPC); AssignCommand(oPC , ClearAllActions()); AssignCommand(oPC , JumpToLocation(lLoc)); } Voilà à première vue ca devrait marcher. _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 ![]() Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | ![]() ![]() ![]() |
zogzog59 Grand Chevalier ![]() Messages: 123 |
tes scripts doivent marcher mais le problème c'est que je veux mettre cela dans un objet dans la catégorie objet et qu'il n'y a pas d'onglet script (la ou il y a les catégorie avec Onused, Onclose, Onmachin etc .....).
je c'est pas comment faire cela si tu as un script plus en rapport avec ce que je veux je t'en serais reconnaissant ^^. |
Revenir en haut | ![]() ![]() ![]() |
Darkavanger Grand Chevalier Messages: 114 |
Salut
Ce que tu veux faire est impossible, il n'y a pas d'onglet Onused dans les objets portables, ce script, tu dois le mettre dans le OnactivateItem des propriétés de ton module. |
Revenir en haut | ![]() ![]() ![]() ![]() |
Sith Vicious Grand Sage du Conseil ![]() Messages: 693 |
Passe par le OnActivateItem du module.
NWScript :
void main() { object oItem = GetItemActivated(); object oUser = GetItemActivator(); if (GetTag(oItem) == "Tag de ta pierre") { SetCampaignLocation("Persistant_locations", "PLOC", lLoc, oUser); } } En revanche d'après mon experience et le lexicon, SetCampaignLocation marche pas (ptet ça a été réparé donc vérifie). Il faut coder ça à la main. Personellement je mets ça sur une chaine de caractère, y a plein de méthodes. |
Revenir en haut | ![]() ![]() ![]() |
zogzog59 Grand Chevalier ![]() Messages: 123 |
d'abort merci a toi sith.
Et tu as raison le script ne ce compile pas donc si quelqu'un connait une solution ou une méthode qu'il a employé je suis preneur. merci .... |
Revenir en haut | ![]() ![]() ![]() |
Sith Vicious Grand Sage du Conseil ![]() Messages: 693 |
Pour les joueurs (enfin pour un objet aussi d'ailleurs) j'utilise ça :
NWScript :
void SvStoreLocation(object oPC) { location lLoc = GetLocation(oPC); object oZone = GetAreaFromLocation(lLoc); string sAreaName = GetTag(oZone); float fX,fY,fZ,fFacing = 0.0; vector vVecteur = GetPositionFromLocation(lLoc); fFacing = GetFacingFromLocation(lLoc); fX = vVecteur.x; fY = vVecteur.y; fZ = vVecteur.z; string sPosition = GetStringLeft(FloatToString(fX,5),5); sPosition += GetStringLeft(FloatToString(fY,5),5); sPosition += GetStringLeft(FloatToString(fZ,5),5); sPosition += GetStringLeft(FloatToString(fFacing,5),5); sPosition += sAreaName; //tu stockes sPosition comme tu veux (database ou objet) } Et dans le sens inverse : NWScript :
location SvGetLocationFromString(string sPosition) { float fX,fY,fZ,fFacing = 0.0; vector vVecteur; fX = StringToFloat(GetStringLeft(sPosition,5)); fY = StringToFloat(GetSubString(sPosition,5,5)); fZ = StringToFloat(GetSubString(sPosition,10,5)); fFacing = StringToFloat(GetSubString(sPosition,15,5)); string sTag = GetStringRight(sPosition,GetStringLength(sPosition)-20); vVecteur = Vector(fX,fY,fZ); location lNew; lNew = Location(GetObjectByTag(sTag),vVecteur,fFacing); return lNew; } En revanche c'est bizarre que ça compile pas les autres scripts, théoriquement ça compile mais juste ça marche pas (très pratique). Vérifie les déclaration, c'est ptet pas dans le bon ordre. |
Revenir en haut | ![]() ![]() ![]() |
zogzog59 Grand Chevalier ![]() Messages: 123 |
merci sith mais ou place ton tes scripts ??? car je comprend pas ton truc de sens inverse ?? !!
|
Revenir en haut | ![]() ![]() ![]() |
Sith Vicious Grand Sage du Conseil ![]() Messages: 693 |
De rien
![]() Ce sont plus des fonctions que des scripts, donc tu les place où tu veux, soit dans une biblio si tu vas t'en servir souvent, sinon directement dans le script ou tu l'utilises, avant le void main(). Le sens inverse c'est que la première fonction enregistre la position (il faut que tu rajoutes une ligne pour définir ou tu la stockes) sous forme d'une chaine de caractère, donc quand tu veux retrouver cette position (à la reco du joueur), il faut bien la décoder, la deuxième fonction sert à ça. Imagines que tu stockes l'info sur un objet indropable qui a pour tag "infos". Dans le premier script tu rajoutes : 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. La fonction tu l'appeles quand quelqu'un utilise la pierre (par le OnActivateItem). Et à la connection (enfin plutôt quand il rentre dans la zone de départ c'est mieux) du joueur tu retrouves ça par : NWScript : void main() { object oPC = GetEnteringObject(); object oInfo = GetItemPossessedBy(oPC,"infos"); string sPos = GetLocalString(oInfo,"POSITION"); if (sPos != "") AssignCommand(oPC,JumpToLocation(SvGetLocationFromString(sPos))); } |
Revenir en haut | ![]() ![]() ![]() |


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