JeuxOnLineForumsPlusCréer un compte
Neverwinter Nights
Maskado
Répondre
Partager Outils Rechercher
Avatar de xelone
xelone
Roi
 
Avatar de xelone
 

porte s'ouvrant avec un anneau

voici un petit script que j'ai fait mais qui ne compile pas ! il est censé faire s'ouvrir une porte par toute personne possédant un anneau ! dites moi si ca tiens la route ?

Code PHP:
void main()
{

object oPC GetLastOpenedBy();

if (!
GetIsPC(oPC)) return;

if (
GetItemPossessedBy(oPC"anneauava")== OBJECT_INVALID)
   {
   
sDeny="Vous ne pouvez ouvrir cette porte"// il me mets ici variable defined without type

   
SendMessageToPC(oPCsDeny);

   return;
   }

object oTarget;
oTarget GetObjectByTag("porteprison");

AssignCommand(oTargetActionOpenDoor(oTarget));
// ferme la porte apres un certain temps
    
DelayCommand(5.0ActionCloseDoor(OBJECT_SELF));

Lien direct vers le message - Vieux
Avatar de Twist
Twist
Empereur
 
Avatar de Twist
 
Tu n'as pas déclaré sDeny, Xelone.

Code PHP:
string sDeny
Voilà la raison de ton message d'erreur, ton programme ne sait pas quel type de variable est sDeny. C'est du string, du int, du float, du gingembre, du béton cellulaire ? Il n'en sait fichtre rien, puisque tu ne le précise pas.



Lien direct vers le message - Vieux
Avatar de Fanley
Fanley
Alpha & Oméga
 
Avatar de Fanley
 
Y a un autre truc qui me choque: GetLastOpenedBy... Si la porte a été ouverte, le script est sans objet, si elle l'a pas été, qui peut bien être le GetLastOpenedBy (censement, la dernière personne qui a ouvert la porte)... surement pas celle qui essaye d'ouvrir la porte maintenant.

C'est le GetLastUsedBy() qu'il te faut, je pense...

Un autre truc qui me surprend, c'est le oTarget: pourquoi ne pas utiliser directement OBJECT_SELF, comme pour le delaycommand?

D'ailleurs, il te faudra peut être utilisé un AssignCommand pour le DelayCommand comme pour le ActionOpenDoor.

*fais un chtit coucou à Twistouille au passage*
Lien direct vers le message - Vieux
Avatar de Twist
Twist
Empereur
 
Avatar de Twist
 
Fanley a tout dit !

(Coucou, itou)
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Roi
 
Avatar de xelone
 
donc ca donnerai un truc du genre:

Code PHP:
void main()
{

string sDeny;
object oPC GetLastUsedBy();

if (!
GetIsPC(oPC)) return;

if (
GetItemPossessedBy(oPC"anneauava")== OBJECT_INVALID)
   {
   
sDeny="Vous ne pouvez ouvrir cette porte"// il me mets ici variable defined without type

   
SendMessageToPC(oPCsDeny);

   return;
   }

AssignCommand(ActionOpenDoor(OBJECT_SELF));
// ferme la porte apres un certain temps
AssignCommand(DelayCommand(5.0ActionCloseDoor(OBJECT_SELF)));

euh, je me suis inspiré de plusieurs script ! mais le sDeny, je le definis comment ?
Lien direct vers le message - Vieux
marion
Roi / Reine
 
Je pense qu'il faut rajouter OBJECT_SELF dans ton AssignCommand, avant le ActionOpenDoor...
pour le sDeny, je crois que ça va marcher (je suis pas une reference).
Lien direct vers le message - Vieux
Avatar de Fanley
Fanley
Alpha & Oméga
 
Avatar de Fanley
 
Tout à fait exact, Marion, il faut bien preciser à qui on assigne la commande de fermer la porte.
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Roi
 
Avatar de xelone
 
voici ce que ça donne (ca compile) mais ca ne fonctionne pas, ma porte reste fermée. Dans l'onglet serrure, je l'ai mise en verrouillée, cle requise

Code PHP:
void main()
{

string sDeny;
object oPC GetLastUsedBy();

if (!
GetIsPC(oPC)) return;

if (
GetItemPossessedBy(oPC"anneauava")== OBJECT_INVALID)
   {
   
sDeny="Vous ne pouvez ouvrir cette porte";

   
SendMessageToPC(oPCsDeny);

   return;
   }

AssignCommand(OBJECT_SELF,ActionOpenDoor(OBJECT_SELF));
// ferme la porte apres un certain temps
AssignCommand(OBJECT_SELF,DelayCommand(5.0ActionCloseDoor(OBJECT_SELF)));

Lien direct vers le message - Vieux
Avatar de Fanley
Fanley
Alpha & Oméga
 
Avatar de Fanley
 
Je devines pourquoi: il faut deverouiller la serrure avant d'ouvrir la porte (et donc reverouiller la porte après)
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Roi
 
Avatar de xelone
 
donc un UnlockObject ! a placer où ?

Code PHP:
void main()
{

string sDeny;
object oPC GetLastUsedBy();

if (!
GetIsPC(oPC)) return;

if (
GetItemPossessedBy(oPC"anneauava")== OBJECT_INVALID)
AssignCommand(OBJECT_SELF,ActionUnlockObject(OBJECT_SELF)); // a mettre ici ou + loin ?
   
{
   
sDeny="Vous ne pouvez ouvrir cette porte";

   
SendMessageToPC(oPCsDeny);

   return;
   }

AssignCommand(OBJECT_SELF,ActionOpenDoor(OBJECT_SELF));
// ferme la porte apres un certain temps
AssignCommand(OBJECT_SELF,DelayCommand(5.0ActionCloseDoor(OBJECT_SELF)));

edit : fonctionne tjr pas comme ca !! mais je me pose une question en regardant mon script : je ne devrais pas mettre un "else" quelque part ? ou le sDeny fait office ?
Lien direct vers le message - Vieux
Avatar de Théranthil
Théranthil
Alpha & Oméga
 
Avatar de Théranthil
 
Tu ne peux pas juste faire un anneau avec le tag de la clef??

Quite à rajouter si tu y tiens absolument un script pour afficher le vous ne pouvez ouvrir cette porte dans le OnFailToOpen...
Lien direct vers le message - Vieux
Avatar de Mastokk
JOL Mastokk
Alpha & Oméga
 
Avatar de Mastokk
 
Le plus simple est que tu fasse un déclencheur devant ta porte, dans lequel tu mets ce script. N'oublie pas de changer le TAG de ta porte en "RINGDOOR":

Code PHP:
void main()
{

string sDeny ;
object oPC ;
object oDoor ;

oDoor GetObjectByTag("RINGDOOR") ;
oPC GetEnteringObject();
sDeny "Vous ne pouvez ouvrir cette porte";

if (
GetIsPC(oPC) == TRUE)
    {
    if (
GetItemPossessedBy(oPC"anneauava") == OBJECT_INVALID)
        {
        
SendMessageToPC(oPCsDeny) ;
        }
        else
            {
            
AssignCommand(oDoorActionUnlockObject(oDoor)) ;
            
AssignCommand(oDoorActionOpenDoor(oDoor));
            
DelayCommand (5.0ActionCloseDoor(oDoor)) ;
            }
    }

testé, fonctionne.
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Roi
 
Avatar de xelone
 
Mon dieu qu'est ce que je suis bete !!! pq j'ai en effet pas pensé a mettre le tag de mon anneau pour la clé !!! pffff a force de chercher des scripts, j'ai l'impression qu'on oublie la simplicité !!!
Lien direct vers le message - Vieux
Répondre

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +2. Il est actuellement 03h50.
   

© 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