Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
248 connectés actuellement
30679427 visiteurs depuis l'ouverture
1724 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
Sofreack -
posté le 04/06/2014 à 11:43:20 (938 messages postés)
| J'ai dix doigts et une main. | Domaine concerné: Script Logiciel utilisé: RM VX Ace Salut,
dans le déplacement personnalisé d'un event j'utilise la commande: moveto($game_player.x,$game_player.y)" et moveto(x,y)
la première correspondant à la position du joueur sur la map et la seconde à des coordonnées de la map.
Mon but est de créer un sort de téléportation. Soit un truc du genre.
moveto($game_player.x+4case vers l'avant,$game_player.y): si le perso regarde vers la droite ou la gauche
moveto($game_player.x,$game_player.y+4cases vers l'avant): si le perso regarde vers le haut ou le bas.
Mais je ne sais pas comment l'écrire et si c'est possible.
La commande moveto(x,y) ne m'a pas l'aire très utile puisque qu'elle tp directement aux coordonnées x et y et ce peut importe la position du joueur sur la map.
J'aimerais donc juste savoir si c'est possible de faire un "moveto($game_player.x)+ 4 cases vers l'avant" ?
Merci d'avance à celui qui se penchera dessus.
|
Valjean Story |
Joke -
posté le 04/06/2014 à 12:19:20 (5090 messages postés)
| Bilouteux fou | Tu as $game_player.direction qui renvoit :
2 = bas
8 = haut
4 = gauche
6 = droite
(mnémonique : regarder le pavé numérique, 8 est en haut, 2 est en bas, 4 est à gauche, 6 est à droite)
Du coup tu dois faire :
1
| moveto($game_player.x + a,$game_player.y + b) |
Avec a et b qui seront égal à "0", "4", ou "-4" selon la direction du héros.
Pour donner a et b, la solution immédiate c'est :
1
2
3
4
5
6
7
8
9
10
11
| case $game_player.direction
when 2
a, b = 0, 4
when 4
a, b = -4, 0
when 6
a, b = 4, 0
when 8
a, b = 0, -4
end
moveto($game_player.x + a,$game_player.y + b) |
Et bien sûr, on peut aussi très bien se passer de script pour faire exactement la même chose en événement.
EDIT :
Pour m'amuser, j'ai trouvé une solution par le calcul pour trouver a et b en fonction de $game_player.direction sans faire de condition :
1
2
3
4
| d = $game_player.direction
a = 4 * ((d-4)%3-1)
b = 4 * (((d+3)%8-3)%3-1)
moveto($game_player.x + a,$game_player.y + b) |
Ne me demande pas comment j'ai trouvé, je suis nul, c'est parfaitement empirique (et certainement simplifiable)
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
Sofreack -
posté le 04/06/2014 à 13:20:00 (938 messages postés)
| J'ai dix doigts et une main. | Merci beaucoup Joke, j'étais sûr que c'est toi qui allait me donner la solution tes tuto mon d'ailleur bien servit c'est cool des mecs qui aide comme toi .
|
Valjean Story |
Joke -
posté le 04/06/2014 à 15:01:42 (5090 messages postés)
| Bilouteux fou | C'est un plaisir.
Je m'amuse à trouver des solutions inutiles :
1
2
3
4
5
6
7
| r = $game_player.direction / 2 - 1
m = [[ 0, 4],
[-4, 0],
[ 4, 0],
[ 0,-4]]
a, b = m[r][0], m[r][1]
moveto($game_player.x + a, $game_player.y + b) |
*attends l'arrivée d'un vrai scripteur*
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
Sofreack -
posté le 04/06/2014 à 15:18:17 (938 messages postés)
| J'ai dix doigts et une main. | Ba j'ai fait ça et ça marche nickel:
Par contre j'ai un souci maintenant c'est que lorsque je me retrouve face à l'un des bords de la map ça me téléporte à l'autre extrémité de la map.
Si par exemple je suis coller à droite de la map je me retrouve tout a gauche sur le même axe avec 3 case de plus. Ça risque d'être plus compliqué de bloquer ça non ?
|
Valjean Story |
Joke -
posté le 04/06/2014 à 15:44:28 (5090 messages postés)
| Bilouteux fou | Tu veux que la téléportation soit annulée, ou bien par exemple au lieu d'un déplacement de 4 ça fait un déplacement de 3, 2, 1... ?
Aussi, il y a une différence entre "moveto" et "téléporter" ?
S'il n'y a pas de différence, par solution "événement", j'entendais :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Modifier variable "ID" rendre égal à "ID de la map"
Modifier variable "X" rendre égal à "Coordonnée X carte du héros"
Modifier variable "Y" rendre égal à "Coordonnée Y carte du héros"
Condition : Héros regarde vers le bas
Modifier variable "Y" additionner "4"
Fin de condition
Condition : Héros regarde vers le gauche
Modifier variable "X" soustraire "4"
Fin de condition
Condition : Héros regarde vers le droite
Modifier variable "X" additionner "4"
Fin de condition
Condition : Héros regarde vers le haut
Modifier variable "Y" soustraire "4"
Fin de condition
Téléporter équipe : Variables "ID", "X", "Y" |
Et tu aurais pu épargner à RM tes "+ 0", aussi.
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
Sofreack -
posté le 04/06/2014 à 18:00:17 (938 messages postés)
| J'ai dix doigts et une main. | J'ai mal employé le mot c'est un moveto pas une téléportation comme le "Téléporter" du bouton. Si je lance le moveto au bord de la map je me retrouve a l'opposé sur le même axe.
Sinon le 3,2,1 serait le top voir même un 0 car imaginon que mon event ennemi soit collé au bord et que je soit juste devant lui même avec le 1 je me retrouverais alors sur lui.
En fait je crois que ça sera trop compliqué à gérer car cette façon de téléporter permétra au joueur de traverser les décor et passer à travers des événement comme un chemin bloqué ou des endroit qu'il ne devrait pas avoir accès. Il faudrait créer tout un system de colision avec le décor et les évent c'est trop lourd pour moi. Merci de ton aide en tout cas ça me sera quand même utile pour d'autre choses.
|
Valjean Story | Index du forum > Entraide > [RM VX Ace] Ami scripteur une petite aide svp ?
|
|
|