Furious^ONE! Posted July 10, 2015 Share Posted July 10, 2015 Bonjour, Ayant fait un script basé sur un MoveObject, donc pour ouvrir un portail, j'ai remarqué que la commande pouvait être effectué n'importe ou, par exemple la grille est a SF et le joueur tappant la commande a LS, il pourras l'ouvrir quand même. Donc j'aimerai savoir comment pourrai-je faire pour que le joueur puissent l'ouvrir que lorsqu'il est devait le portail a tel et tel zones. Et lorsque qu'il soit a LS, sa lui envoie un message outPutChatBox, vous n'êtes pas devant le portail. Voici mon script: local gate = createObject ( 980, -1364.5552978516, -517.26147460938, 15.5, 0, 0, 298.96350097656 ) local state = false addCommandHandler ( "gr", function ( thePlayer ) if ( not state ) then outputChatBox("Gate open",thePlayer, 0,166,237,true) moveObject ( gate, 2500, -1364.5552978516, -517.26147460938, 22, 0, 0, 0 ) else moveObject ( gate, 2500, -1364.5552978516, -517.26147460938, 15.5, 0, 0, 0 ) outputChatBox("Gate close",thePlayer, 143,0,0,true) end state = ( not state ) end end ) Link to comment
Moderators Citizen Posted July 10, 2015 Moderators Share Posted July 10, 2015 Bonjour RoRo76, Pour commencer, ce script ne peut pas fonctionner tel que tu nous l'a collé car il y a un end en trop. Tu as peut être supprimé un if au-dessus de if ( not state ) then qu'on ne devait pas voir ou parce que c'était un test. Je vais le laisser parce qu'on va effectivement rajouter un if au-dessus donc ça évitera de replacer le end en bas parce que les codeurs sont flemmards Pour résoudre ton problème, il suffit juste de calculer la distance qui sépare le joueur tapant la commande et le portail. Pour cela rien de plus facile, il te faut: - getter la position x, y, z du joueur - getter la position x, y, z du portail - calculer la distance entre ces 2 positions - ajouter un if pour vérifier que cette distance soit inférieur à une distance que tu auras définit. local gate = createObject ( 980, -1364.5552978516, -517.26147460938, 15.5, 0, 0, 298.96350097656 ) local state = false addCommandHandler ( "gr", function ( thePlayer ) local px, py, pz = getElementPosition(thePlayer) -- Position du joueur local gx, gy, gz = getElementPosition(gate) -- Position de la gate local distance = getDistanceBetweenPoints3D(px, py, pz, gx, gy, gz) -- Calcul de la distance if ( distance <= 20 ) -- Check si cette distance est inférieur à 20 (j'ai mis 20 mais tu peux évidemment changer) if ( not state ) then outputChatBox("Gate open", thePlayer, 0, 166, 237) moveObject ( gate, 2500, -1364.5552978516, -517.26147460938, 22, 0, 0, 0 ) else moveObject ( gate, 2500, -1364.5552978516, -517.26147460938, 15.5, 0, 0, 0 ) outputChatBox("Gate close", thePlayer, 143, 0, 0) end state = ( not state ) else outputChatBox("You are too far to open the gate !", thePlayer, 143, 0, 0) -- Erreur que je ne pense pas nécessaire end end ) Par rapport au message d'erreur s'il est trop loin, je ne pense pas que ce soit une bonne idée de l'afficher parce que lorsque tu auras 20+ gates, le joueur se fera spammer dans la chatbox. Soit il te faudra trouver une solution pour qu'il ne s'affiche qu'une fois, soit tu le supprimes carrément, ce qui ne me choquerait pas en tant que joueur. Aussi, j'ai vu que tu mettais true en dernier argument de tes outputChatBox mais cela ne sert que si tu veux faire utiliser des "colorCodes" dans ton message pour l'afficher avec plusieurs couleurs différentes dedans. Exemple (provenant du wiki d'ailleurs): outputChatBox ( "#FF0000Hello #00FF00World", getRootElement(), 255, 255, 255, true ) ce qui affichera: Hello World dans la chatbox, ce qui n'est pas possible de faire avec les arguments r, g et b de la fonction. Cordialement, Citizen Link to comment
Furious^ONE! Posted July 10, 2015 Author Share Posted July 10, 2015 Merci a toi Citizen, effectivement j'ai essayé de m'attaqué a un script type MoveObject, pour un de mes premier code, je me suis bien sûr aidé du Wiki, et quelques conseil sur les parti forum Anglais, je te remercie encore une fois de ton aide. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now