Besoin d'aide:Script pour "Barrière inertielle"

Répondre
Partager Rechercher
Bonjour j'aimerai créer un script qui empêcherait les PJ disposant d'un objet particulier de pénétrer dans une zone. Pouvez vous m'aidez? Est ce facile à mettre en place?

Merci d'avance
Salut,

C'est très simple comme script, le tout est de savoir comment les PJ entrent dans cette zone (via un trigger, une porte, un plaçable, etc...)

Dans le cas d'un trigger de transition (ou d'une porte), voici le script à placer dans l'event OnClick:

Code PHP:

void main()
{
 
object oClicker GetClickingObject();
 if(!
GetIsObjectValid(GetItemPossessedBy(oClicker"tagitem")))
  
AssignCommand(oClicker,JumpToObject(GetTransitionTarget(OBJECT_SELF)));
 else
  
SendMessageToPC(oClicker"Vous ne pouvez pas entrer.");

Veille à remplacer "tagitem" par le TAG de l'objet désiré.
Je viens de m'en apercevoir j'ai un petit souci avec ton script Nek. Il fonctionne très bien, ceux qui ont l'objet ne peuvent franchir la zone choisie, mais ceux qui ne l'ont pas ne le peuvent pas non plus lol. J'ai essayer de trouver une solution mais ça n'a rien donné... Je m'en remet a vous
J'ai vérifié les deux tags celui du WP et celui de l'objet empechant le passage, mais ca ne resoud pas le probleme. Juste une petite indication c'est bien dans le "OnAreaTransitionClick" que ce script doit etre placé? (je n'ai pas apercu de "OnClick" je pensais qu'il s'agissait d'une abréviation mais on ne sait jamais )
Oui c'est bien cet event là pour une porte (et le OnClick pour un trigger).

Vérifie que tu as bien coché "Passage" pour ton type de destination, dans les propriétés de la porte.

Tu as également le bouton "Définir zone de transition" qui te permet de choisir une destination valide, qui peut t'aider à ne pas te tromper.

Sinon, le message "Vous ne pouvez pas entrer." est là aussi pour aider à vérifier si la condition du script fonctionne correctement.
Est-ce que quand tu cliques sur la transition tu obtiens le message "Vous ne pouvez pas entrer ?" quand tu n'as pas l'objet ?
Et quand tu l'as ?

Et si tu enlève le script de la transition, ça fonctionne ?
Non lorsque que je n'ai pas l'objet je ne reçois pas le message, et effectivement lorsque que je retire le script la transition fonctionne a nouveau. Est ce qu'un tag trop long peut etre en cause?
Si tu ne reçois pas le message lorsque tu n'as pas l'objet, cela veut dire que le script fonctionne bien

Un tag est limité à 32 caractères, un blueprint/resref à 16.
Si ces PJ ne reçoivent pas le message "vous ne pouvez pas entrer", c'est que le script ne les empêche pas de le faire. La cause vient d'ailleurs (erreur de tag, mauvaise configuration des propriétés, autre script que tu utilises, etc...).
Sans avoir toutes les infos, c'est difficile à dire
En effet, le script tel qu'il est ne marche pas.

Il faut faire :
Code PHP:

void main()
{
    
object oClicker GetClickingObject();
    
object oTarget GetTransitionTarget(OBJECT_SELF);

    if(!
GetIsObjectValid(GetItemPossessedBy(oClicker"tagitem")))
        
AssignCommand(oClicker,JumpToObject(oTarget));
    else
        
SendMessageToPC(oClicker"Vous ne pouvez pas entrer.");

C'est bizarre, le résultat devrait être le même...
Je ne suis pas un bon scripteur, voir même pas bon du tout, mais il me semble que ton script fait l'effet inverse de ce que Aldarine voulait.

On dirait que justement il faut que le PJ possède l'objet "tagitem" sur lui pour qu'il puisse traverser la transition.
C'est bizarre en effet... Mais ce ne serait pas la première fois que le nwscript se comporte bizarrement vis à vis des constantes ou des fonctions nécessitant une déclaration au préalable (comme pour ApplyEffectToObject par exemple).

@chronos: le "!" fait office d'opérateur logique de négation
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés