Pour ceux qui aimeraient forcer un PC à effectuer une action, voici la connerie du OBJECT_SELF en ation. Imaginez que vous avez une chaise que vous avez rendu utilisable dont le but est de faire assoir quelqu'un quand il clique dessus.
par exemple le script chair_u
Code :
- void main()
- {
- AssignCommand(GetLastUsedBy(), ActionDoCommand(ActionSit(OBJECT_SELF))) ;
- }
|
Ne fonctionne pas. Pourtant si vous vouliez prosterner votre joueur devant la chaise il suffisait de faire la même chose :
Code :
- void main()
- {
- AssignCommand(GetLastUsedBy(), ActionPlayAnimation(xxxxWORSHIP))) ;
- }
|
Pourquoi ? la seule explication cohérente que j'ai trouvé c'est que OBJECT_SELF ne soit pas une valeur et qu'un mécanisme objet se cache derrière. OBJECT_SELF est à mon sens évalué au sein du PC lorsqu'il doit exécuter ActionSit() et OBJECT_SELF prend la valeur du PC et non celle de la chaise.
La solution est très simple (et stupide aussi) :
Code :
- void main()
- {
- object oChair = OBJECT_SELF ; // Copie de la valeur de OBJECT_SELF
- AssignCommand(GetLastUsedBy(), ActionDoCommand(ActionSit(oChair))) ;
- }
|
Message édité par Toxin le 21-09-2002 à 12:50:10
---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos