Je voudrais savoir s'il était possible de créer des fonctions dans un script de manière a pouvoir l'appeler depuis un autre objet.
Je demande ca parce que les variables globales c bien mais quand on commence a en avoir beaucoup ca devient un peu le bordel (je travaille sur un mod bourré de porte secretes).
J'aurais aimé pouvoir faire un appel du genre
Maporte->ouvrir()
Maporte->fermer()
dans le script d'un activator qui serait planqué quelque part dans la piece
SANS devoir passer par l'utilisation d'une variable globale du type Door_state
Parce que dans mon mode j'en suis deja à Secret_Door_state12 !!!!!!
ps: j'ai deja essayé d'utiliser plusieures variantes de la syntaxe:
Begin ouvrir()
End ouvrir
dans le script de ma porte mais ca marche pas....
Donc, est-ce possible?
Merci d'avance...
PitLord
1
Script Et Prog Orientée Objet
Débuté par
PitLord
, 14 janv. 2006 - 19:22
2 réponses à ce sujet
#1
Posté 14 janvier 2006 - 19:22
#2
Posté 14 janvier 2006 - 19:46
Oui c'est possible.
Associe ce script a l'activator dans la piece de la porte :
dans la ligne id_de_la_porte -> Rotate, z, X, le X est a remplacer par la vitesse avec laquelle tu veux que la porte s'ouvre. C'est en angle par seconde.
A noter aussi que dans le if ( id_de_la_porte -> GetAngle, z == 90 ), le 90 pourrait etre amené a changer, ca dépend de l'orientation de ta porte lorsqu'elle est fermée.
Bon je pense que ce script devrait marcher, mais je me suis peut etre tromper quelque part.
Mais j'espere qu'il n'y a pas d'erreur.
Associe ce script a l'activator dans la piece de la porte :
Begin ouverture short done if ( OnActivate == 1 ) if ( done == 0 ) id_de_la_porte -> Rotate, z, X if ( id_de_la_porte -> GetAngle, z == 90 ) set done to 1 endif if ( done == 1 ) return endif endif end
dans la ligne id_de_la_porte -> Rotate, z, X, le X est a remplacer par la vitesse avec laquelle tu veux que la porte s'ouvre. C'est en angle par seconde.
A noter aussi que dans le if ( id_de_la_porte -> GetAngle, z == 90 ), le 90 pourrait etre amené a changer, ca dépend de l'orientation de ta porte lorsqu'elle est fermée.
Bon je pense que ce script devrait marcher, mais je me suis peut etre tromper quelque part.
Mais j'espere qu'il n'y a pas d'erreur.
"Wrong, Do it again!"
"If you don't eat yer meat, you can't have any pudding. How can you have any pudding if you don't eat yer meat?"
"You! Yes, you behind the bikesheds, stand still laddy!"
--------------------
Membre des Fervents Partisans de l'Immuabilité Avatarienne!
"If you don't eat yer meat, you can't have any pudding. How can you have any pudding if you don't eat yer meat?"
"You! Yes, you behind the bikesheds, stand still laddy!"
--------------------
Membre des Fervents Partisans de l'Immuabilité Avatarienne!
#3
Posté 15 janvier 2006 - 05:52
PitLord, le 14.01.2006 à 19:22, dit :
Je voudrais savoir s'il était possible de créer des fonctions dans un script de manière a pouvoir l'appeler depuis un autre objet.
Oui et non. On ne peut pas créer de fonctions, mais on peut créer des scripts et ensuite les appeler. Quand un script est lancé depuis un script local, il est aussi un script local, donc il pourra utiliser les fonctions SetAngle, SetPos et compagnie.
Le problème c'est que si tu utilises des activateurs "planqués quelque part" ça signifie que tes portes secrètes ne sont pas celles qui ont le script, c'est ça ? Donc tu sera obligé de garder des variables globales...
A moins que tes portes ne soient elles des objets uniques chacuns, avec Reference Persists coché, auquel cas tu peux les manipuler depuis un script qui ne leur est pas local ; mais c'est une solution plus lourde techniquement que la variable globale...
Le saviez-vous ?
En français, il n'y a jamais, jamais, JAMAIS, J-A-M-A-I-S, de cédille à un 'c' devant un 'e', un 'i' ou un 'y'. Jamais. Sans aucune exception. Pas la moindre. Zéro. Cédille devant e, i ou y = faute. Un point, c'est tout, c'est comme ça, ça a toujours été comme ça, et ça le sera toujours.
En français, il n'y a jamais, jamais, JAMAIS, J-A-M-A-I-S, de cédille à un 'c' devant un 'e', un 'i' ou un 'y'. Jamais. Sans aucune exception. Pas la moindre. Zéro. Cédille devant e, i ou y = faute. Un point, c'est tout, c'est comme ça, ça a toujours été comme ça, et ça le sera toujours.
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)