JeuxOnLineForumsPlusConnectés : 211 (sites) | 470 (forums)Créer un compte
Neverwinter Nights 2
La Tour des Arcanes
Répondre
Partager Outils Rechercher
Avatar de Heleanna
Heleanna
Grand duc / Grande duchesse
 
Avatar de Heleanna
 

Changer dynamiquement un objet d'environnement en placeable bloquant

Une grande question que je me pose ^^

j'ai un placeable positionné au sol sur une map IG, il est en élément d'environnemment (ou en placeable utilisable ça revient au même) et est donc traversable.
Avec un script je pense pouvoir le rendre "static" mais comment faire pour le recalcul de walkmesh ? Car sous l'editeur quand je rends l'objet "static" (ou convertir en placeable ça revient au même) je dois faire un recalcul de la map après .. mais dynamiquement IG, existe-t-il une solution ?
Lien direct vers le message - Vieux
Avatar de Lv4
Lv4
Duc / Duchesse
 
Avatar de Lv4
 
Je ne crois pas qu'il existe de solution, ni pour le passage en statique ni pour le changement du mesh.

Il me semble que le walkmesh est permanent une fois créé, on ne peut pas le changer dynamiquement.
Quand à passer un placeable en statique, si ce plc a été créé en jeu (par script), alors ça ne te sert à rien et en plus et je ne crois pas que ce soit possible.

Une idée peut-être est de faire l'obstruction par script... bon courage. :)

Edit: c'est même écrit dans une [faq] hu hu
Lien direct vers le message - Vieux
Avatar de Ambrosis
Ambrosis
Roi
 
Avatar de Ambrosis
 
Je ne suis sur de rien, mais n'y a t-il rien a faire avec l'objet "Collision Box" ?
__________________
Lien direct vers le message - Vieux
Avatar de Heleanna
Heleanna
Grand duc / Grande duchesse
 
Avatar de Heleanna
 
Vi la faq explique exactement ce que je fais avec mes objets statics et dynamiques .. dommage que le "But..." n'apporte pas une solution à "le walkmesh n'est jamais modificable IG" mais juste une explication ... fausse joie ^^

dommage (mais j'm'en doutais un peu ^^)
Lien direct vers le message - Vieux
Avatar de Deyonara
JOL Deyonara
Alpha & Oméga
 
Avatar de Deyonara
 
Une solution consisterait à créer un plaçable identique, et modifier ses paramètres de "Comportement". Soit le paramètre "Statique" de l'objet à "FALSE" (décoché) ainsi que le paramètre "Collision dynamique" à "TRUE" (coché).

Via un script, il est possible de le modifier le paramètre "Collision dynamique" en utilisant la fonction "SetCollision(...)".
Lien direct vers le message - Vieux
Avatar de Claudius33
Claudius33
Duc
 
Avatar de Claudius33
 
Il ne faut pas placer le plaçable sur le carte, mais le "spawner" par CreateObject la première fois que le joueur entre sur sur la carte ou au bon moment.

Dans le blueprint du plaçable (ça ne peut pas être un élément d'environnement), cocher la propriété collisions dynamiques.

Une fois "spawné" sur la carte, il bloque alors le passage. Faire un DestroyObject au moment voulu pour libérer le passage.

Le plaçable peut être a priori n'importe quel plaçable, par exemple un groupe de rochers.
Lien direct vers le message - Vieux
Avatar de Heleanna
Heleanna
Grand duc / Grande duchesse
 
Avatar de Heleanna
 
Donc dynamiquement IG le placeable auparavant traversable ne le sera plus après ? j'ai bien saisi ?
Lien direct vers le message - Vieux
Avatar de Deyonara
JOL Deyonara
Alpha & Oméga
 
Avatar de Deyonara
 
Et inversement si tu le désires.

Attention quand même à ne pas trop "enterrer" le plaçable. Parfois il devient traversable à cause de ça.
Lien direct vers le message - Vieux
Avatar de Heleanna
Heleanna
Grand duc / Grande duchesse
 
Avatar de Heleanna
 


Merci beaucoup, j'avais peu d'espoir sur ce coup là !
Lien direct vers le message - Vieux
Avatar de Claudius33
Claudius33
Duc
 
Avatar de Claudius33
 
De rien .

Précision : on peut même placer le fameux plaçable sur la carte du moment que collisions dynamiques est cochée. Je viens de vérifier. J'ai en effet utilisé les collisions dynamiques à plusieurs endroits et sur le premier cas vérifié je "spawne", pour d'autres je place.

Dans les 2 cas on peut détruire et "respawner". Par exemple pour ne voir une porte secrète cachée par une bibliothèque (à collisions dynamiques) que si l'on s'équipe d'un objet particulier ..
Lien direct vers le message - Vieux
Avatar de Heleanna
Heleanna
Grand duc / Grande duchesse
 
Avatar de Heleanna
 
Tests effectués dès ce matin aux aurores ^^

en effet un placeable bloquant popé dynamiquement IG (collision dynamique de coché) peut passer IG, via script, de bloquant à non bloquant puis de non bloquant à bloquant ... et cela autant de fois que je veux.

par contre, si je pop l'objet dynamiquement IG et qu'à la base il est non bloquant (collision dynamique de pas coché), pas moyen de le rendre bloquant
(et bien sur c'est cet ordre de manip qui m'intéresse )
Lien direct vers le message - Vieux
Avatar de Deyonara
JOL Deyonara
Alpha & Oméga
 
Avatar de Deyonara
 
Tu peux toujours le faire apparaître en mode bloquant, puis le rendre non-bloquant par le biais d'un script ou d'une baguette magique. J'avais l'habitude de mettre une variable locale à 1 dans les propriétés de l'objet, accompagnée d'un script dans l'événement "OnHeartBeat", vu que l'événement "OnSpawn" n'existe pas sur les plaçables.
Code PHP:
void main()
{
    
object oSelf OBJECT_SELF;
    if(
GetLocalInt(oSelf,"MA_VARIABLE"))
    {
        
// Si la variable n'est pas correctement supprimée,
        // comme c'était le cas dans NWN 1er du nom,
        // Il vaut mieux utiliser la fonction SetLocalInt(...)
        // SetLocalInt(oSelf,"MA_VARIABLE",0);
        
DeleteLocalInt(oSelf,"MA_VARIABLE");
        
SetCollision(oSelf,FALSE);

        
// Je ne sais pas si ça marche, mais si c'est le cas,
        // on peut peut-être retirer le script de la liste pour
        // soulager le module d'un script récurent :
        
SetEventHandler(oSelf,SCRIPT_PLACEABLE_ON_HEARTBEAT,"");
    }

Il me semblait bien que ce problème avait été évoqué je ne sais plus trop où, mais j'avais un peu oublié.
Lien direct vers le message - Vieux
Avatar de Heleanna
Heleanna
Grand duc / Grande duchesse
 
Avatar de Heleanna
 
ça veut pas de chez ça veut pas ^^
J'ai mis le placeable avec collision dynamique de coché

dans le mod_activate qui, à l'activation d'un objet UTI, fait apparaitre le placeable, en plus du createobject j'ai ajouté setcollision (oO, 0) (et j'ai testé avec 0 ou FALSE) => placeable infranchissable

dans le ohb du placeable j'ai mis setcollision(oO, 0) (sans test de variable comme toi Deyonara) => placeable infranchissable

Lien direct vers le message - Vieux
Avatar de Heleanna
Heleanna
Grand duc / Grande duchesse
 
Avatar de Heleanna
 
*dépoussière son post*

Je me suis aperçue d'un soucis en voulant rendre un placeable bloquant et un autre à côté en voulant le laisser bloquant. J'appliquais pas le SetCollision au placeable mais au PJ. (pourtant ça changeait bien l'état des placeables ... mais sur toute la map ! )

Quand je m'assure d'avoir bien appliqué le SetCollision sur le bon tag du bon placeable .. il ne se passe rien (si je fais un GetCollision il me retourne bien 0 ou 1 mais pour le même résultat : toujours bloquant)

Quelqu'un avait réussi à bien faire varier l'état du SetCollision d'un placeable indépendemment des autres placeables ?

Merci d'avance
Lien direct vers le message - Vieux
Avatar de Laban
Laban
Dieu suprême
 
Avatar de Laban
 
Non. C'est une chose qu'on a bcp demandé mais jamais réussi à passer :/
Lien direct vers le message - Vieux
Répondre

Outils Rechercher
Rechercher:

Recherche avancée

Thème visuel : Fuseau horaire GMT +2. Il est actuellement 08h05.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite