Dakeyras
Inscrit le: 06 Nov 2007
Messages: 36
Posté le: 11/11/2007 23:46 Sujet du message: [Resolu] l'inventaire d'un placeable....
Ca peut paraitre con.. mais j'arrive pas a ouvrir l'inventaire d'un placeable...
Pourtant je le fais automatiquement sur un coffre classique, mais la... des que je met un script sur l'utilisation du placeable, impossible d'ouvrir ce dernier..
OpenInv n'a pas l'air de fonctionner...
Y a il une fonction miracle qui me permette de faire fonctionner cela?
Dernière édition par Dakeyras le 19/11/2007 1:00; édité 3 fois
Anthraxcite
Inscrit le: 26 Juil 2006
Messages: 94
Posté le: 12/11/2007 15:36 Sujet du message:
ActionInteract ou quelque chose du genre.
Dakeyras
Inscrit le: 06 Nov 2007
Messages: 36
Posté le: 12/11/2007 16:15 Sujet du message:
Marf!
Ca marche po
J'ai l'impression que ActionInteractObject déclenche le script déclenché par l'utilisation du l'objet. Malheureusement ce dernier n'est pas vide dans mon contexte, alors ca donne rien
Je vais prendre le problème d'une autre manière, je vais m'arranger pour avoir les mêmes fonctionnalités sans utilisé le scipt onUse, ce sera plus simple, et en plus je pourrai utiliser ta commande.
Merci quand même.
Anthraxcite
Inscrit le: 26 Juil 2006
Messages: 94
Posté le: 13/11/2007 22:33 Sujet du message:
Tu peux très bien "empêcher" le script de s'enclencher, il suffit de passer par une variable :
SetLocalInt(oPlaceable,"interact",1);
ActionInteract.....
Puis dans l'évènement onuse :
if(GetLocalInt(OBJECT_SELF,interact)!=1)
{
//Fonctionnement normal
}
else
{
//Fonctionnement du à l'ActionInteract
}
DeleteLocalInt(OBJECT_SELF,"interact");
Dakeyras
Inscrit le: 06 Nov 2007
Messages: 36
Posté le: 13/11/2007 23:23 Sujet du message:
Bien pensé! ca m'avait même pas efleuré l'esprit
Dakeyras
Inscrit le: 06 Nov 2007
Messages: 36
Posté le: 17/11/2007 19:07 Sujet du message:
En fait, j'avais pas testé tout de suite...
je restais sur le problème du chariot.
Ton idée marche bien mais elle a un petit bémol :
J'ai mit un localInt pour permettre l'utilisation du placeable (sinon une conversation se déclenche)
Et je le delete que le placeable se referme.
Mais j'ai encore un mini problème .
La commande pour ouvrir le placeable c'est quoi :
j'ai essayé le script suivant :
Citation
void main()
{
object oPC = GetPCSpeaker();
SetLocalInt(OBJECT_SELF, "Interact", 1);
ClearAllActions();
SetLocked(OBJECT_SELF, FALSE);
AssignCommand(oPC, ActionInteractObject(OBJECT_SELF));
}
Mais il n'ouvre pas de lui même le placeable (je dois cliquer moi même pour l'ouvrir par la suite)
C'est pas bien important, vu que j'arrive a mes fins, mais si tu pouvais me dire où est l'erreur, ca serait simpa.
Anthraxcite
Inscrit le: 26 Juil 2006
Messages: 94
Posté le: 18/11/2007 12:39 Sujet du message:
Essaye avec :
AssignCommand(oPC, ClearAllActions(TRUE));
Je ne suis pas certain que le problème vienne de là(il vaudrait par exemple mieux passer tout ce qui doit se dérouler dans un ordre précis en chaine d'actions). Cependant j'arrive à ouvrir sans problème un contenant que je crée et que je rempli à la volée(pour un système de vol à la tir), en faisant comme ceci :
Code: |
//Le script qui contient ces lignes est éxécuté par une UI donc OBJECT_SELF est le personnage
object oInventaireDeVol = CreateObject(OBJECT_TYPE_PLACEABLE,"ll_inventaire_vol",GetLocation(OBJECT_SELF));
SetLocalObject(oInventaireDeVol,"Owner",oTarget);
SetLocalObject(oInventaireDeVol,"Voleur",OBJECT_SELF);
RempliInventaireVol(oInventaireDeVol, oTarget, iCurrentSmall, nSmallWanted, "sml");
RempliInventaireVol(oInventaireDeVol, oTarget, iCurrentMedium, nMediumWanted, "med");
RempliInventaireVol(oInventaireDeVol, oTarget, iCurrentLarge, nLargeWanted, "lrg");
//Pour le vol d'or
SetLocalObject(OBJECT_SELF,"Container",oInventaireDeVol);
SetLocalObject(OBJECT_SELF,"Cible",oTarget);
ActionInteractObject(oInventaireDeVol); |
Sans ClearAllActions donc mais je suis pratiquement certain que le perso ne faisait rien avant de cliquer dans l'interface.
Dakeyras
Inscrit le: 06 Nov 2007
Messages: 36
Posté le: 19/11/2007 0:56 Sujet du message:
J'ai un peu potassé la chose...
J'ai quelques réponses au problème :
- Déjà contrairement à ce que je pensais, le script que l'on met dans onUse ne remplace pas l'ouverture du placeable : Il s'execute juste avant.
- Par conséquent, l'enclenchement d'une discussion annule l'ouverture du placeable. Par contre, je n'ai pas reussi à réenclencher un onUse après le début d'une conversation
(De ce coté, j'ai pas trop cherché, car j'ai trouvé mieux pour ma situation. Pour ceux qui veulent le faire, a mon avis un SignalEvent me prait une bonne piste)
Comme alternative, j'ai écrit un script qui ne s'enclenche que si le placeable est verrouillé. Il faut donc juste réouvrir le coffre a la main après une fois qu'il est déverrouillé. Ca présente l'avantage de pouvoir se faire ouvrir le coffre par quelqu un d'autre.
Et en fin de compte, j'ai terme mon challenge ! un coffre couteau suisse :
- Se revérouille automatiquement au bout de 10 secondes sans ouverture.
- Permet de pouvoir forcer la serrure sans pour autant detruire le coffre.
(Qui par ailleurs est incassable. Le forceage se fait par un test de force)
- Permet de distribuer son contenu initial a chaque player venant le visiter.
(On peut même reposer ces élément dans le coffre et revenir les prendre plus tard. Ces objets la ne pourront pas être pris par d'autre personnes.)
- Se comporte comme n'importe quel autre coffre concernant les autres objets eventuels que des PJ pourraient laisser dans le coffre :
(Si X dépose oItem dans le coffre, Y peut très bien venir le récupérer.)
Tadam! *fier*
Bon, cela m'a pris moins de temps que pour le chariot (qui soit dit en passant est toujours sur le stand bye). Accessoirement, si certains voyent d'autres fonctionnalités qui peuvent s'avérer utile en Multi pour un coffre, je suis pret à entendre toute suggestion!
(A vrai dire, je me suis mit à l'éditeur mais j'ai encore quasiment pas joué en multi, alors il y a peut être des choses auxquelles j'ai pas du tout pensé mais qui sont primordiale en multi.)
En tout cas, merci pour ton aide Anthraxcite.
Anthraxcite
Inscrit le: 26 Juil 2006
Messages: 94
Posté le: 19/11/2007 14:43 Sujet du message:
Dakeyras
En tout cas, merci pour ton aide Anthraxcite.
Pas de soucis, si tu cherches à travailler sur un monde persistant(puisque je vois que tu parles de multi), les Légendes du Luiren( ll.nwn2.fr ) recrutent toujours :p.
Dakeyras
Inscrit le: 06 Nov 2007
Messages: 36
Posté le: 21/11/2007 3:25 Sujet du message:
Les légendes de Luiren? ok, j'irai y faire un tour une fois rentré!