La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 06/05/2024 23:30:10


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
shan-no
Voyageur
Inscrit le: 16 Juil 2007
Messages: 3
Répondre en citant
Posté le : 16/07/2007 18:14:08 Sujet du message : Scanner les items dans un rayon de x Metre

Bonjour je me presente : Shan-no
Je joue a neverwinter night depuis quelques années sur des serveur RP mais depuis je fait des petits modules(personel) pour le plaisir ou je joue en privée avec des amis.

Voila je suis en train de realisé un module basé sur le theme du manga "Full Metal Alchemist".
Dans le manga il realise ce qu ils appellent l"alchimie" en fait il realise des transmutation grace a des cercles qu ils activent et les ingredient necessaire pour realisé la chose.

je me sert des cercles celtiques du cep2 comme cercles de transmutations, faire qu ils sont actif est facile, faire un script pour qu il realise ce que je veut je pense me debrouillé. En fait j ai appris a scripté sur le tas donc j ai des petits points que je connais vraiment pas.

Alors voila mon probleme :
Un cercle de transmutation pour creer un mur. pour creer ce mur on a besoin d un objet avec dans son tag "_pr" et un autre objet "_st" dans un rayon de x Metre.
En fait creer le mur par le biais du cercle c est facile il suffit juste de creer un placeable, mais pour chercher l objet qui a dans son tag "_pr" et "_st" qui soit dans un rayon de x Metre (il peut etre soit dans un reste dans l inventaire d un pj d un placeable etc.) c est autre chose en fait je ne sais pas comment m y prendre.

Voila mon probleme j espere que quelqu un pourrait m aider merci au revoir.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 17/07/2007 13:44:35 Sujet du message :

NWScript :
void main()
{
   
    object oCercle = GetObjectByTag("Cercle_de_transmutation");

   
    object oScan = GetFirstObjectInShape(SHAPE_SPHERE, 10.0, GetLocation(oCercle), FALSE, OBJECT_TYPE_ITEM);

   
    int i = 0;
    int j = 0;

    // Lancement de la boucle pour scanner les objets
    while(GetIsObjectValid(oScan))
    {
       
        if(GetTag(oScan) == "TAG_ITEM_1") i = 1;
        if(GetTag(oScan) == "TAG_ITEM_2") j = 1;

       
        if(i == 1 && j == 1)
        {
            break;
            /////////////////
            // CODE DE LA TRANSMUTATION
            /////////////////
        }

        // Sinon, on continue le scan
        else
        {
            oScan = GetNextObjectInShape(SHAPE_SPHERE, 10.0, GetLocation(oCercle), FALSE, OBJECT_TYPE_ITEM);
        }
    }
}
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.



Là j'ai testé directement le tag des objets de la zone, mais tu peux tout autant utiliser la fonction GetSubString() pour tester des bouts de tag. C'est pas testé, donc pas garanti Smile
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14064
Localisation: Quadran Alpha
Répondre en citant
Posté le : 17/07/2007 18:21:03 Sujet du message :

Tss. C'est mieux quand php + short_open_tags = Off!
_________________
#nwnights-fr @ irc.darkmyst.org TitanQuest-FR
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 17/07/2007 19:25:05 Sujet du message :

C'est justement ce que je me disais au réveil ce matin !
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
shan-no
Voyageur
Inscrit le: 16 Juil 2007
Messages: 3
Répondre en citant
Posté le : 17/07/2007 22:16:44 Sujet du message :

Salut merci beaucoup !

J ai une question c est pas plus simple d utiliser FindSubString() pour trouver un morceau de tag?

Je viens d essayer ca marche bien merci sauf sur un point en fait j ai remarquer qu il scanne que ce qu il ya au sol.
Je voudrais faire en sorte qu il puisse aussi scanner dans les inventaire des placeable et des personnes. Embarassed
Désolé pour cette demande qui parait un peu compliqué.
Merci

Edit :
Non en fait c est bon je viens de saisir comment ca marche je vais utilisé une autre boucle pour voir si la creature dans un rayon de 10 m possede l item avec HasItem().

Merci encore a plus tard
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 18/07/2007 04:19:43 Sujet du message :

Il va en effet te falloir faire des boucles à l'intérieur de la boucle. Fais attention au type d'objet cherché par le scan de la zone : dans le script j'ai mis "OBJECT_TYPE_ITEM", mais si tu veux scanner les créatures, il faut mettre "OBJECT_TYPE_CREATURE | OBJECT_TYPE_ITEM" pour signifier "créature OU objet". Ça donnera quelque chose de ce goût-là :

NWScript :
void main()
{
   
    object oCercle = GetObjectByTag("Cercle_de_transmutation");

   
    object oScan = GetFirstObjectInShape(SHAPE_SPHERE, 10.0, GetLocation(oCercle), FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_ITEM);

   
    int i = 0;
    int j = 0;

    // Lancement de la boucle pour scanner les objets
    while(GetIsObjectValid(oScan))
    {
       
        if(GetObjectType(oScan) == OBJECT_TYPE_CREATURE)
        {
            object oObjet = GetFirstItemInInventory(oScan);
            while(GetIsObjectValid(oObjet))
            {
                if(GetTag(oObjet) == "TAG_ITEM_1") i = 1;
                if(GetTag(oObjet) == "TAG_ITEM_2") j = 1;

               
                if(i == 1 && j == 1) break;

                // Sinon, on continue le scan
                else oObjet = GetNextItemInInventory(oScan);
            }
        }

        // sinon c'est un OBJET
        else
        {
           
            if(GetTag(oScan) == "TAG_ITEM_1") i = 1;
            if(GetTag(oScan) == "TAG_ITEM_2") j = 1;

           
            if(i == 1 && j == 1) break;

            // Sinon, on continue le scan
            else oScan = GetNextObjectInShape(SHAPE_SPHERE, 10.0, GetLocation(oCercle), FALSE, OBJECT_TYPE_ITEM);
        }
    }


   
    if(i == 1 && j == 1)
    {
        /////////////////
        // CODE DE LA TRANSMUTATION
        /////////////////
    }
}
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.



Bon, c'est un peu crado comme code, c'est pas optimisé pour un sou, mais sur le principe ça doit ressembler à ça Laughing
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 18/07/2007 04:26:42 Sujet du message :

Et dans la foulée, je fais mon 500ème post.

ENFIN ! Je vais pouvoir jouir d'un forum sans disclaimer, alleluia Very Happy
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
shan-no
Voyageur
Inscrit le: 16 Juil 2007
Messages: 3
Répondre en citant
Posté le : 18/07/2007 12:02:07 Sujet du message :

waho he ben merci beaucoup.

C est a peu pret ce que j etait en train de faire sauf que je pensai pas qu on pouvait faire ca OBJECT_TYPE_CREATURE | OBJECT_TYPE_ITEM Very Happy
Enfin merci encore et a bientot!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 18/07/2007 12:58:50 Sujet du message :

C'est indiqué dans le descriptif de l'éditeur pour la fonction GetFirstObjectInShape(). N'hésite pas à regarder ce descriptif quand tu codes, c'est une inépuisable source d'apprentissage, et surtout de correction d'erreurs Smile
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur 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 30.216ms