Pokémon Script Project Forum Index

Manuel | Search
 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
Goto page: 1, 2  >
 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts
Previous topic :: Next topic   
Author Message
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Fri 6 Sep - 16:02 (2013)    Post subject: 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


Last edited by Ku'rei on Fri 13 Sep - 22:42 (2013); edited 9 times in total
Back to top
Publicité






PostPosted: Fri 6 Sep - 16:02 (2013)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Fri 6 Sep - 17:57 (2013)    Post subject: Murets

Ça peut être utile, merci du partage. Clin d'œil foireux
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Fri 6 Sep - 17:59 (2013)    Post subject: Murets

Ça a l'air pas mal mais pourquoi avoir un autre tag pour la gauche ?
Back to top
Facebook Twitter
Dark_Ray
Membre


Joined: 08 Jul 2011
Posts: 191
Localisation: Dans le continuum espace-temps
Masculin

PostPosted: Fri 6 Sep - 18:12 (2013)    Post subject: 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
Back to top
Visit poster’s website Skype Twitter
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Fri 6 Sep - 18:26 (2013)    Post subject: 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)
Back to top
Facebook Twitter
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Fri 6 Sep - 22:08 (2013)    Post subject: Murets

C'est on pourrait tester le sens de passage. Je vois ca demain.
Les tags terrains ne sont pas consommé.
Back to top
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Sat 7 Sep - 07:15 (2013)    Post subject: Murets

Sinon, j'ai une petite question: est-il possible de désactiver le saut de talus pour certains évents ?
Back to top
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Sat 7 Sep - 09:33 (2013)    Post subject: 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


Last edited by Ku'rei on Sat 7 Sep - 10:17 (2013); edited 1 time in total
Back to top
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Sat 7 Sep - 10:17 (2013)    Post subject: 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
Back to top
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Sat 7 Sep - 10:18 (2013)    Post subject: Murets

Oui c'est une combinaison de script possible Imbécile heureux Et même trés intéressante. Au Maker de l'utiliser !
Back to top
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Sat 7 Sep - 10:19 (2013)    Post subject: 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)
Back to top
Ku'rei
Membre


Joined: 10 Aug 2010
Posts: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

PostPosted: Sat 7 Sep - 10:36 (2013)    Post subject: Murets

Je viens de tester, tout fonctionne à merveille ! Merci Imbécile heureux
Back to top
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Sat 7 Sep - 10:38 (2013)    Post subject: Murets

Tant mieux. Et comme ça, plus de problèmes de consommation des tags terrains. Clin d'œil foireux
Back to top
gogos778
Membre


Joined: 05 Mar 2014
Posts: 11
Novice ambitieux
Localisation: Belgique
Masculin

PostPosted: Fri 10 Oct - 21:43 (2014)    Post subject: 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...
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Sat 11 Oct - 08:51 (2014)    Post subject: Murets

Script mal installé, copié collé depuis le navigateur Web (l'afficheur de script injecte des codes corrompus).
Back to top
Facebook Twitter
Contenu Sponsorisé






PostPosted: Today at 19:33 (2019)    Post subject: Murets

Back to top
Display posts from previous:   
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts All times are GMT + 1 Hour
Goto page: 1, 2  >
Page 1 of 2

 
Jump to:  

Index | Free forum | Free support forum | Free forums directory | Report a 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)