Pokémon Script Project Index du Forum

S’enregistrer | Rechercher | Connexion
 Information des admins 
Si vous désirez parler de PSP ou obtenir du soutient là dessus, merci d'aller faire un tour sur https://pokemonworkshop.com/forum/index.php Imbécile heureux

Murets
Aller à la page: 1, 2  >
 
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Scripts
Sujet précédent :: Sujet suivant   
Auteur Message
Ku'rei
Membre


Inscrit le: 10 Aoû 2010
Messages: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté 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
    • Création du sujet

  • 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é






MessagePosté le: Ven 6 Sep - 16:02 (2013)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Ven 6 Sep - 17:57 (2013)    Sujet du message: Murets

Ça peut être utile, merci du partage. Clin d'œil foireux
Revenir en haut
Nuri Yuri
Administrateur
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté 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
Facebook Twitter
Dark_Ray
Membre


Inscrit le: 08 Juil 2011
Messages: 191
Localisation: Dans le continuum espace-temps
Masculin

MessagePosté le: Ven 6 Sep - 18:12 (2013)    Sujet du message: Murets

Parce que sinon on pourrait remonter les talus droite et gauche Clin d'œil foireux

Je vois que ça qui nécessite une distinction des 2
Revenir en haut
Visiter le site web du posteur Skype Twitter
Nuri Yuri
Administrateur
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté 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 Gros matou qui ronronne (Enfin, je le pense comme ça :b)
Revenir en haut
Facebook Twitter
Ku'rei
Membre


Inscrit le: 10 Aoû 2010
Messages: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté 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

MessagePosté 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 NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté 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

MessagePosté le: Sam 7 Sep - 10:17 (2013)    Sujet du message: Murets

Sinon, pour éviter de consommer des tags terrains de l'éditeur, on peut toujours implanter ceci: http://pokemonscriptproject.xooit.fr/t12640-Infinite-de-Tag-Terrains.htm
Revenir en haut
Ku'rei
Membre


Inscrit le: 10 Aoû 2010
Messages: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté le: Sam 7 Sep - 10:18 (2013)    Sujet du message: Murets

Oui c'est une combinaison de script possible Imbécile heureux 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

MessagePosté 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 NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté le: Sam 7 Sep - 10:36 (2013)    Sujet du message: Murets

Je viens de tester, tout fonctionne à merveille ! Merci Imbécile heureux
Revenir en haut
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté 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. Clin d'œil foireux
Revenir en haut
gogos778
Membre


Inscrit le: 05 Mar 2014
Messages: 11
Novice ambitieux
Localisation: Belgique
Masculin

MessagePosté 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
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté 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
Facebook Twitter
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 07:52 (2017)    Sujet du message: Murets

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Scripts Toutes les heures sont au format GMT + 1 Heure
Aller à la page: 1, 2  >
Page 1 sur 2

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Thème par Thomas et l'équipe de la refonte PSP 2012 (version 1.0)
Traduction par : phpBB-fr.com