Sujet précédent :: Sujet suivant |
Auteur |
Message |
Ku'rei Membre
Inscrit le: 10 Aoû 2010
Messages: 546 Adepte du NoMoreExcusesLocalisation: Chambéry 
|
Posté le: Ven 6 Sep - 16:02 (2013) Sujet du message: Murets |
|
|
Bonjour tout le monde,
Voici mon script sur les murets que l'on peut sauter. C'est un petit script qui pourrait servir à plus d'un.
Fonctionnalités
Ce script propose les fonctionnalités suivantes :
- Le script gère les talus sautables vers le bas, la droite et la gauche (si ça intéresse quelqu'un, il est trés facile d'ajouter les talus sautables vers le haut).
- Il empêche le saut quand la zone d'atterissage n'est pas dégagée.
- Il s'applique à tout les Game_Character, donc le joueur pourra sauter les talus mais les event aussi.
- Possibilité de personnaliser les tags terrains utilisés et le son joué.
- Les tags terrains utilisés restent utilisable pour les rencontres aléatoires.
Instalation Copiez/coller ce script dans un nouveau script au-dessus de Main appelé Game_Character.
Code: | #============================ # Script Muret by Ku'rei Jinwu # Version 0.2 #============================ # Credits obligatoires #============================ module Kurei LOW_WALL_DOWN_RIGHT_TAG = 6 # tag terrain des murets sautables vers la droite et le bas LOW_WALL_LEFT_TAG = 5 # tag terrain des murets sautables vers la gauche LOW_WALL_JUMP_SOUND = "Audio/SE/064-Swing03.ogg" # Chemin du fichier se a joueur lors du saut LOW_WALL_JUMP_SOUND_VOL = 50 # Volume du son jouer lors du saut LOW_WALL_JUMP_SOUND_PITCH = 100 # Tempo du son jouer lors du saut LOW_WALL_UNEFFECTED_WORD = "NO_LOW_WALL_JUMP" # Mot à entrer en commentaire dans un event pour # pour qu'il ne puisse pas sauter les murets end
class Game_Character attr_accessor :low_wall_effect # Est true si l'event doit sauter les murets #-------------------------------------------------------------------------- # ● 下に移動 # turn_enabled : その場での向き変更を許可するフラグ #-------------------------------------------------------------------------- def move_down(turn_enabled = true) # 下を向く if turn_enabled turn_down end # 通行可能な場合 if passable?(@x, @y, 2) # 下を向く turn_down # 座標を更新 @y += 1 # 歩数増加 increase_steps # 通行不可能な場合 else # 接触イベントの起動判定 check_event_trigger_touch(@x, @y+1) end low_wall_handler end #-------------------------------------------------------------------------- # ● 左に移動 # turn_enabled : その場での向き変更を許可するフラグ #-------------------------------------------------------------------------- def move_left(turn_enabled = true) # 左を向く if turn_enabled turn_left end # 通行可能な場合 if passable?(@x, @y, 4) # 左を向く turn_left # 座標を更新 @x -= 1 # 歩数増加 increase_steps # 通行不可能な場合 else # 接触イベントの起動判定 check_event_trigger_touch(@x-1, @y) end low_wall_handler end #-------------------------------------------------------------------------- # ● 右に移動 # turn_enabled : その場での向き変更を許可するフラグ #-------------------------------------------------------------------------- def move_right(turn_enabled = true) # 右を向く if turn_enabled turn_right end # 通行可能な場合 if passable?(@x, @y, 6) # 右を向く turn_right # 座標を更新 @x += 1 # 歩数増加 increase_steps # 通行不可能な場合 else # 接触イベントの起動判定 check_event_trigger_touch(@x+1, @y) end low_wall_handler end # Gère les saut par dessus les murets def low_wall_handler() if !low_wall_effect # On quitte la fonction si le personnage ne subit pas return # les effets des murets end udx = udy = 0 # variable unit delta, valent -1, 0 ou 1. Determinent # a case de devant du personnage # Détermination de la case de devant case @direction when 2 # Quand le personnage va vers le bas udy = 1 when 4 # Quand le personnage va vers la gauche udx = -1 when 6 # Quand le personnage va vers la droite udx = 1 end # Detection d'un muret et saut si detection # saut bloqué automatiquement quand la case cible n'est pas passante if !moving? and !$game_map.passable?(@x + udx, @y + udy, @direction) if ($game_map.terrain_tag(@x + udx, @y + udy) == Kurei::LOW_WALL_DOWN_RIGHT_TAG and udx != -1) or ($game_map.terrain_tag(@x + udx, @y + udy) == Kurei::LOW_WALL_LEFT_TAG and udx == -1) #print("jump ! From ", @x, ", ", @y, " to ", @x+2*udx, ", ", @y+2*udy) # Lance le saut uniquement si l'atterissage est dégagé x = @x+2*udx y = @y+2*udy if $game_map.passable?(x, y, @direction) and $game_map.terrain_tag(x, y) != 7 and $game_map.check_event(x, y) == nil jump(2*udx, 2*udy) Audio.se_play(Kurei::LOW_WALL_JUMP_SOUND, Kurei::LOW_WALL_JUMP_SOUND_VOL, Kurei::LOW_WALL_JUMP_SOUND_PITCH) end end end end # Récupère la commande de commentaire. Retourne un string si la commande est trouvée, nil sinon # word : string, commande def get_commentaire_command(word) for page in event.pages for command in page.list for par in command.parameters if par.is_a?(String) and par.include?(word) return par end end end end return nil end end
class Game_Map alias old_setup setup def setup(map_id) old_setup(map_id) # Appel de l'ancienne fonction # Application de la commande commentaire d'effet de muret. for event in @events.values event.low_wall_effect = !(event.get_commentaire_command(Kurei::LOW_WALL_UNEFFECTED_WORD) != nil) end $game_player.low_wall_effect = true end
# Check s'il y a un event au coordonnées données # renvoi nil sinon l'id de l'event présent def check_event(x, y) for event in $game_map.events.values if event.x == x and event.y == y return event.id end end return nil end end |
ATTENTION ! Ce script modifie les fonctions des scripts d'origines :
- Game_Character.move_right
- Game_Character.move_down
- Game_Character.move_left
Dans la BDD :
- Passabilité : les tiles murets doivent tous être non passant.

- Tags terrain : Voir le début du script pour la personnalisation des tags utilisés. Par défaut, les muret passable vers la droite et le bas sont ont le tag 6, les murets passable vers la gauche ont le tag 5.

Personnalisation :
- LOW_WALL_DOWN_RIGHT_TAG : Tag des muret passables vers le bas et la droite
- LOW_WALL_LEFT_TAG : Tag des murets passables vers la gauche.
- LOW_WALL_JUMP_SOUND : Chemin du son jouer au moment du saut.
- LOW_WALL_JUMP_SOUND_VOL : Volume du son jouer.
- LOW_WALL_JUMP_SOUND_PITCH : Tempo du son jouer.
- LOW_WALL_UNEFFECTED_WORD : Mot à placer dans un commentaire d'événement afin de désactiver le saut de muret pour l'événement.
Utilisation
Rien de spécial, placer vos tiles murets comme vous le souhaitez, le script fera le reste.
Pour désactiver le saut de muret pour un événement, faites Insérer un commentaire, et entrez-y le LOW_WALL_UNEFFECTED_WORD (par défaut : NO_LOW_WALL_JUMP), la valeur est modifiable dans les constantes du script.
Le script Unlimited_Terrain_Tags est parfaitement compatible, je vous conseille de l'utiliser si vous souhaitez économiser des tags terrains.
Historique des mises à jour
- 06/09/13
- 07/09/13
- Mise à jour 0.1 : possibilité de désactiver les saut de murets pour certain events, correction bug de son lorsqu'on tentait de sauter vers de l'eau
- 13/09/13
- Mise_à jour 0.2 : correction du bruit répéter lors d'un saut de murets vers une case occupée par un event
Dernière édition par Ku'rei le Ven 13 Sep - 22:42 (2013); édité 9 fois |
|
Revenir en haut |
|
 |
Publicité
|
Posté le: Ven 6 Sep - 16:02 (2013) Sujet du message: Publicité |
|
|
|
|
Revenir en haut |
|
 |
TouzaxA Membre
Inscrit le: 27 Juil 2012
Messages: 2 669
|
Posté le: Ven 6 Sep - 17:57 (2013) Sujet du message: Murets |
|
|
Ça peut être utile, merci du partage.  |
|
Revenir en haut |
|
 |
Nuri Yuri Administrateur

Inscrit le: 15 Oct 2008
Messages: 6 383 ~Entity~Localisation: Nancy  ID Steam: Nuri_Yuri
|
Posté le: Ven 6 Sep - 17:59 (2013) Sujet du message: Murets |
|
|
Ça a l'air pas mal mais pourquoi avoir un autre tag pour la gauche ? |
|
Revenir en haut |
|
 |
Dark_Ray Membre
Inscrit le: 08 Juil 2011
Messages: 191 Localisation: Dans le continuum espace-temps 
|
Posté le: Ven 6 Sep - 18:12 (2013) Sujet du message: Murets |
|
|
Parce que sinon on pourrait remonter les talus droite et gauche 
Je vois que ça qui nécessite une distinction des 2 |
|
Revenir en haut |
|
 |
Nuri Yuri Administrateur

Inscrit le: 15 Oct 2008
Messages: 6 383 ~Entity~Localisation: Nancy  ID Steam: Nuri_Yuri
|
Posté le: Ven 6 Sep - 18:26 (2013) Sujet du message: Murets |
|
|
Ah oui x) Ça distingue pas les par les passages. Enfin, c'est un peu bête de consommer du tag comme ça. Le mieux serait d'avoir une config' correcte des passages et vérifier si on est sur le tag 6 (Enfin, je le pense comme ça :b) |
|
Revenir en haut |
|
 |
Ku'rei Membre
Inscrit le: 10 Aoû 2010
Messages: 546 Adepte du NoMoreExcusesLocalisation: Chambéry 
|
Posté le: Ven 6 Sep - 22:08 (2013) Sujet du message: Murets |
|
|
C'est on pourrait tester le sens de passage. Je vois ca demain. Les tags terrains ne sont pas consommé. |
|
Revenir en haut |
|
 |
TouzaxA Membre
Inscrit le: 27 Juil 2012
Messages: 2 669
|
Posté le: Sam 7 Sep - 07:15 (2013) Sujet du message: Murets |
|
|
Sinon, j'ai une petite question: est-il possible de désactiver le saut de talus pour certains évents ? |
|
Revenir en haut |
|
 |
Ku'rei Membre
Inscrit le: 10 Aoû 2010
Messages: 546 Adepte du NoMoreExcusesLocalisation: Chambéry 
|
Posté le: Sam 7 Sep - 09:33 (2013) Sujet du message: Murets |
|
|
Je pense qu'on peut faire ça. Mais cela nécessitera quelques modif ^^
EDIT:: Pour Yuri, faire avec les sens de passage ne fonctionnera pas, il y aura toujours un moment ou on pourra passer (quand l'atterissage n'est pas dégagé par exemple). Mais il n'y a pas de problèmes, les tags ne sont pas consomés, on peut toujours les utiliser pour les rencontres.
EDIT2::TouzaxA, c'est fait
Dernière édition par Ku'rei le Sam 7 Sep - 10:17 (2013); édité 1 fois |
|
Revenir en haut |
|
 |
TouzaxA Membre
Inscrit le: 27 Juil 2012
Messages: 2 669
|
|
Revenir en haut |
|
 |
Ku'rei Membre
Inscrit le: 10 Aoû 2010
Messages: 546 Adepte du NoMoreExcusesLocalisation: Chambéry 
|
Posté le: Sam 7 Sep - 10:18 (2013) Sujet du message: Murets |
|
|
Oui c'est une combinaison de script possible Et même trés intéressante. Au Maker de l'utiliser ! |
|
Revenir en haut |
|
 |
TouzaxA Membre
Inscrit le: 27 Juil 2012
Messages: 2 669
|
Posté le: Sam 7 Sep - 10:19 (2013) Sujet du message: Murets |
|
|
Oui, bien sûr. Il est possible par contre de le signaler sur la présentation, si les deux scripts cohabitent bien. (Normalement il n'y a pas de raison que ça n'aille pas) |
|
Revenir en haut |
|
 |
Ku'rei Membre
Inscrit le: 10 Aoû 2010
Messages: 546 Adepte du NoMoreExcusesLocalisation: Chambéry 
|
Posté le: Sam 7 Sep - 10:36 (2013) Sujet du message: Murets |
|
|
Je viens de tester, tout fonctionne à merveille ! Merci  |
|
Revenir en haut |
|
 |
TouzaxA Membre
Inscrit le: 27 Juil 2012
Messages: 2 669
|
Posté le: Sam 7 Sep - 10:38 (2013) Sujet du message: Murets |
|
|
Tant mieux. Et comme ça, plus de problèmes de consommation des tags terrains.  |
|
Revenir en haut |
|
 |
gogos778 Membre
Inscrit le: 05 Mar 2014
Messages: 11 Novice ambitieuxLocalisation: Belgique 
|
Posté le: Ven 10 Oct - 21:43 (2014) Sujet du message: Murets |
|
|
Je comprend pas pourquoi ça marche pas chez moi. Pourtant j'ai tout réglé pour les tags terrains, il me met erreur de syntaxe dès la ligne 8... |
|
Revenir en haut |
|
 |
Nuri Yuri Administrateur

Inscrit le: 15 Oct 2008
Messages: 6 383 ~Entity~Localisation: Nancy  ID Steam: Nuri_Yuri
|
Posté le: Sam 11 Oct - 08:51 (2014) Sujet du message: Murets |
|
|
Script mal installé, copié collé depuis le navigateur Web (l'afficheur de script injecte des codes corrompus). |
|
Revenir en haut |
|
 |
Contenu Sponsorisé
|
Posté le: Aujourd’hui à 11:40 (2018) Sujet du message: Murets |
|
|
|
|
Revenir en haut |
|
 |
|