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

Le Cherch'Objet + détection de case!

 
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Tutoriels
Sujet précédent :: Sujet suivant   
Auteur Message
Therand
Membre


Inscrit le: 26 Déc 2013
Messages: 126
Localisation: Belgique

MessagePosté le: Sam 2 Aoû - 00:32 (2014)    Sujet du message: Le Cherch'Objet + détection de case!

Bonjour à tous,

J'ai remarqué que plusieurs d'entre vous ne seraient pas contre un petit tuto pour le Cherch'Objet amélioré.
Celui que je vous propose ici détecte l'objet en question sur la map et vous fournit trois messages selon trois critères:
-Si l'objet est présent sur la map
-Si l'objet est à moins de X pas
-Si l'objet est à plus de X pas

Il détecte l'objet comme suit:

Vous pouvez bien-entendu régler la distance X (nombre de case) (sur l'image, la distance est de 5)

Place aux explications...

1- En premier lieu, préparer trois interrupteurs:
-CHERCH'OBJET
-CHERCHPROCHE
-CHERCHLOIN

2-Pour la BDD, on va partir sur quelque chose de très basique:
-Onglet objet, crée un objet... CHERCH'OBJET qui appellera notre futur évènement commun
-Onglet évènement commun, créer un évènement commun comme ceci:

<>Interrupteur(s) [XXXX: CHERCHPROCHE] désactivé
<>Interrupteur(s) [XXXX: CHERCHLOIN] désactivé
<>Interrupteur(s) [XXXX: CHERCH'OBJET] désactivé
<>Attendre 20 Frames
<>Jouer un effet sonore (SE) : 'select', volume : 100, tempo : 100
<>Attendre 1 Frames
<>Jouer un effet sonore (SE) : 'select', volume : 100, tempo : 100
<>Attendre 1 Frames
<>Jouer un effet sonore (SE) : 'select', volume : 100, tempo : 100
<>Attendre 1 Frames
<>Jouer un effet sonore (SE) : 'select', volume : 100, tempo : 100
<>Attendre 1 Frames
<>Jouer un effet sonore (SE) : 'select', volume : 100, tempo : 100
<>Attendre 1 Frames
<>Jouer un effet sonore (SE) : 'select', volume : 100, tempo : 100
<>Attendre 1 Frames
<>Condition : si l'interrupteur [XXXX: CHERCHPROCHE] activé
<>Message : Le CHERCH'OBJET trouve quelque chose,
: c'est tout proche!
<>Interrupteur(s) [XXXX: CHERCH'OBJET] activé
<>Sinon
<>Condition : si l'interrupteur [XXXX: CHERCHLOIN] activé
<>Message : Le CHERCH'OBJET trouve quelque chose!
<>Interrupteur(s) [XXXX: CHERCH'OBJET] activé
<>Sinon
<>Message : Le CHERCH'OBJET n'a rien trouvé...
<>Fin
<>Fin


Et voilà pour l’évènement commun!
N'oublier pas d'englober l’évènement commun avec une condition pour invalider l'utilisation du Cherch'Objet si le joueur est en surf, vélo,...

3-L'Event sur la carte:

L'Event à donc trois page, sans apparence, la première et la troisième sont en processus parallèle, la deuxième quant à elle est en appuie sur la touche action.
La page deux possède en condition d'activation, l’interrupteur CHERCH'OBJET
La page trois possède en condition d'activation, l’interrupteur local A

-PAGE 1:
<>Condition : si Script : 'cherchobjet(6)'
<>Interrupteur(s) [XXXX: CHERCHPROCHE] activé
<>Fin
<>Interrupteur(s) [XXXX: CHERCHLOIN] activé
<>Attendre 10 Frames
<>Interrupteur(s) [XXXX: CHERCH'OBJET] activé

-PAGE 2:
<>Objet : "l'objet en question..." + 1
<>Jouer un effet musical (ME) : 'Item', volume : 100, tempo : 100
<>Message : Vous trouvez "Objet"
<>Interrupteur local A activé

-PAGE 3:
<>Interrupteur(s) [XXXX: CHERCH'OBJET] désactivé
<>Effacer cet évènement


4-Ici on va apporter une petite modification au script Interpreter..
Donc rendez-vous dans les script, localiser le script "Interpreter" et au environ de la ligne 1397 vous trouverez ceci:
Code:

  def player_front_passable?
    coord = $game_player.front_tile
    return $game_map.passable?(coord[0],coord[1], 10 - $game_player.direction)
  end


JUSTE EN DESSOUS, copier ceci:
Code:

  #-----------------------------------------------------------------------------
  # cherchobjet
  #-----------------------------------------------------------------------------
  def cherchobjet(distance)
    character = $game_map.events[@event_id]
    if $game_player.moving?
      return false
    end
    case character.direction
    when 4 # Tourné vers la gauche
      if character.y <= $game_player.y + 6 and
          character.x <= $game_player.x + 6 and
          (character.x - $game_player.x).abs <= distance
        return true
      end
    when 8 # Tourné vers le haut
      if character.x <= $game_player.x + 6 and
          character.y <= $game_player.y + 6 and
          (character.y - $game_player.y).abs <= distance
        return true
      end
    when 6 # Tourné vers la droite
      if character.y <= $game_player.y + 6 and
          character.x <= $game_player.x + 6 and
          (character.x - $game_player.x).abs <= distance
        return true
      end
    when 2 # Tourné vers le bas
      if character.x <= $game_player.x + 6 and
          character.y <= $game_player.y + 6 and
          (character.y - $game_player.y).abs <= distance
        return true
      end
    end
  end



Vous avez à présent un systeme "Cherch'Objet" fonctionnel Imbécile heureux
Pour changer le rayon X, remplacez simplement les chiffres "6" par le chiffre de votre choix
Revenir en haut
Publicité






MessagePosté le: Sam 2 Aoû - 00:32 (2014)    Sujet du message: Publicité

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


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Sam 2 Aoû - 07:14 (2014)    Sujet du message: Le Cherch'Objet + détection de case!

Utile pour les personnes qui ont la flemme de coder le leur. Merci du partage. Imbécile heureux
Revenir en haut
Ku'rei
Membre


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

MessagePosté le: Dim 3 Aoû - 16:45 (2014)    Sujet du message: Le Cherch'Objet + détection de case!

Bien vu, une erreur reste : ton objet réaparaîtra dès que tu quittera la map. Je parle de la commande Effacer cet évènement, tu devrais utiliser un interrupteur local activant une page vide Clin d'œil foireux

EDIT:: Je ne comprend pas ton évènement (le premier), tu désactive tout les interrupteurs avant de les tester ?
Revenir en haut
Therand
Membre


Inscrit le: 26 Déc 2013
Messages: 126
Localisation: Belgique

MessagePosté le: Dim 3 Aoû - 16:55 (2014)    Sujet du message: Le Cherch'Objet + détection de case!

Ha oui, moi qui pensais que cette commande effaçait définitivement l'Event :/
Je vais changer cela! Merci

Je désactive tout les interrupteur, sinon il te donne le dernier message vu,
donc en gros si a la première utilisation tu étais loin et qu'à la deuxième tu est proche, il te diras quand même que tu es loin..

Il y a un temps d'attente après la désactivation, ce qui lui laisse le temps de vérifier si l'objet au sol est proche ou loin.

EDIT: l'Event ne réapparaitra pas au changement de map car l’interrupteur "A" reste activé
J'ai testé pour en avoir la certitude.
Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 18:18 (2017)    Sujet du message: Le Cherch'Objet + détection de case!

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 -> Tutoriels Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
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