[Résolu] Tag terrain intraversable selon interrupteur

7 Réponses • 454 Vues

Salut ! :)

Je souhaiterais mettre des hautes-herbes géantes dans mon projet. Celles que l'on ne peut traverser qu'à pied, et pas à bicyclette. Le problème, c'est que je ne trouve aucune commande qui me permette de faire cela.

Il faudrait que lorsque l'interrupteur de la bicyclette est activé, le tag terrain que j'utilise pour l'herbe ne soit pas traversable. Alors qu'il serait traversable lorsque l'interrupteur de la bicyclette n'est pas activé.

Si quelqu'un a une idée...

J'ai aussi pensé à mettre des évènements invisibles tout autour de l'herbe, qui seraient intraversables si l'interrupteur de la bicyclette est activé, mais l'accumulation de ces évènements fait énormément ralentir le jeu... C'est pourquoi je cherche une autre solution.

Merci !

« Modifié: 17 janvier 2016, 21:17:01 par Symbioss »

Merci, mais le problème c'est que je ne sais pas scripter... et je ne sais pas non plus où se trouve le script de l'eau (c'est tellement vaste les scripts, je ne sais même pas où chercher...). :/
Si quelqu'un pouvait m'éclairer... ^^

GiraKoth

Programmeur

Le Surf est géré par un évènement commun et non un script. Tu peux donc commencer par regarder de ce coté là.

Toujours en vie (je crois)
Oui pour surf, je peux m'en servir pour déterminer si le joueur est sur ou devant tel ou tel tag terrain. Par contre, je ne vois pas la commande qui permet de rendre le tag terrain 7 intraversable. Ça n'a pas l'air d'être dans l'évènement commun Surf. Tu es sûr que ce n'est pas dans un script ?

« Modifié: 17 janvier 2016, 10:39:32 par Symbioss »

Nuri Yuri

HostMaster

La possibilité de traverser l'eau est géré depuis Game_Map dans PSP 0.7 :
http://puu.sh/myQpY/0560193f35.png

Suffit de faire un truc équivalent avec la condition indiqué par Daikenzo et ça fonctionne.
ln(yo) = <3
Merci !

J'imagine que dans ce script la ligne 92 permet de rendre l'eau traversable si on est entrain de surfer ? Comment faire pour remplacer cette condition par une condition par interrupteur ?
Désolé pour la question bête, je n'y connais strictement rien en script. :p

Est ce que ça fonctionne si je mets uniquement ce script dans un évènement de la map où j'en ai besoin ? J'ai un peu peur de toucher aux scripts du jeu...

Youspin

Programmeur

Alors pour commencer, attribues un ID tag à tes hautes herbes dans la base de données. Par exemple, le 4.
Ensuite repère ce bout de code dans le premier script 'Game_map' après le script 'Config Panel' :

Spoiler
# Surf 
  if self_event != nil
  if $game_map.terrain_tag(x, y) == 7 and self_event.terrain_tag != 7
  return false
  end
  if $game_map.terrain_tag(x, y) != 7 and self_event.terrain_tag == 7
  if self_event.type == Game_Player
  # Retour au skin normal
  $game_temp.common_event_id = POKEMON_S::Skill_Info.map_use(POKEMON_S::Skill_Info.id("SURF"))
  end
  return false
  end
 
  end
Rajoutes entre les 2 derniers 'end' :
if $game_map.terrain_tag(x, y) == 4 and self_event.terrain_tag != 4 and self_event.type == Game_Player
  if $game_switches[17]
  return false
  end
end
Les deux 4 sont à remplacer par l'ID du tag terrain que tu avais mis dans la base de données pour tes hautes herbes. $game_switches[17] où le 17 est l'ID de l'interrupteur s'activant lorsque tu monteras sur le vélo (Interrupteur de ta bicyclette). N'oublies pas d'activer l'interrupteur 17 lorsque tu montes sur le vélo!

Finalement, ça devrait ressembler à ceci :
Spoiler
    # Surf et bicyclette
  if self_event != nil
  if $game_map.terrain_tag(x, y) == 7 and self_event.terrain_tag != 7
  return false
  end
  if $game_map.terrain_tag(x, y) != 7 and self_event.terrain_tag == 7
  if self_event.type == Game_Player
  # Retour au skin normal
  $game_temp.common_event_id = POKEMON_S::Skill_Info.map_use(POKEMON_S::Skill_Info.id("SURF"))
  end
  return false
  end
  if $game_map.terrain_tag(x, y) == 4 and self_event.terrain_tag != 4 and self_event.type == Game_Player
  if $game_switches[17]
  return false
  end
  end
  end

'reste plus qu'à paramétrer les rencontres aléatoire pour ces herbes ...
Yeah ça fonctionne ! Merci Youspin !

Et merci aussi à tous les autres. :)

There was an error while thanking
Thanking...