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

Téléporter un évent.

 
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
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 4 Nov - 18:09 (2011)    Sujet du message: Téléporter un évent.

Voici un script permettant de copier un évent depuis une autre Map sur la Map en cours avec les positions voulues, il a été fait à partir d'une question sur rpg-maker.fr dans le forum d'entraide.

Script

Code:
#===
#¤class Interpreter
#---
#%Ajout de la methode permettant de charger une évent depuis une autre map
#%Sur la map en cours.
#---
#©03/11/2011 - Nuri Yuri (塗 ゆり)
#©04/11/2011 - Nuri Yuri (塗 ゆり) - Ajout de la possibilité de forcer un id.
#===
class Interpreter
 ID_MAP_DATA=2
 S_Map_File="Data/Map%03d.rxdata"
 Warn=true
 @@old_Map_id=nil
 @Map_Data=nil
 def move_event(id,x,y,map_id=ID_MAP_DATA,force_id=false,sid=0)
  if @@old_Map_id != map_id or !@@Map_Data
   @@old_Map_id=map_id
   @@Map_Data=load_data(sprintf(S_Map_File,map_id))
  end
  event=@@Map_Data.events[id]
  if event
   event.x=x.to_i if x
   event.y=y.to_i if y
   event=Game_Event.new($game_map.map_id, event.clone)
   unless force_id
     if $game_map.events[id]
       arr=$game_map.events.keys.sort
       oid=id
       id=arr[-1]+1
       $game_map.events[id]=event
       p "Attention, l'évent #{oid} existe déjà sur la Map #{$game_map.map_id}, l'évent à été placé avec l'id : #{id}" if Warn
     else
       $game_map.events[id]=event
     end
   else
     id=sid
     $scene.spriteset.delete_character_sprite(id) if $scene.class==Scene_Map
     $game_map.events[id]=event
   end
   event.id=id
   event.event.id=id
   $scene.spriteset.push_character_sprite(id) if $scene.class==Scene_Map
   return true
  else
   p "Erreur : L'évent #{id} n'a pas été trouvé sur la Map #{map_id}" if Warn
   return false
  end
 rescue
  p $! if Warn
  false
 end
end
#===
#¤Class Spriteset_Map
#---
#%Ajout de la methode d'ajout de sprite.
#---
#©03/11/2011 - Nuri Yuri (塗 ゆり)
#===
class Spriteset_Map
 def push_character_sprite(id)
  sprite = Sprite_Character.new(@viewport1, $game_map.events[id])
  @character_sprites.push(sprite)
 end
 def delete_character_sprite(id)
  sprite=nil
  @character_sprites.each {|i|
   if i.character.id==id
    sprite=i
    break
   end
  }
  return unless sprite
  sprite.dispose
  id=@character_sprites.index(sprite)
  @character_sprites[id]=nil
  @character_sprites.compact!
 end
end
#===
#¤Class Game_Character
#---
#%Ajout de l'attribut id
#===
class Game_Character
  attr_accessor :id
  attr_accessor :event
end
#===
#¤Class Scene_Map
#---
#%Ajout de l'attribut spriteset
#===
class Scene_Map
  attr_accessor :spriteset
end


Utilisation

Pour l'utiliser il suffit d'insérer cette commande en appelle de script "move_event(id,x,y)" ça copiera l'évenement id à la position x et y depuis la Map par défauts, vous pouvez mettre un quatrième argument pour copier depuis une autre map que celle par défauts, par exemple : "move_event(5,5,5,32)" pour copier l'évent 5 de la map 32.
Si vous mettez false ou nil à x et y ça va copier l'évent en gardant ses positions de départ.

Pour obliger l'évent à avoir un ID il suffit d'ajouter après l'id de la Map true qui indique que l'on force l'id et l'id de l'évent après true :
Code:
#move_event(id,x,y[,map_id[,force_id,sid]])
move_event(5,10,12,ID_MAP_DATA,true,25) #ID_MAP_DATA étant l'id de la map par défauts...
Attention, dans le cas où vous forcez l'id, l'évent existant ayant déjà cet id sera supprimé donc faites gaffe.

Dans le script il y a deux constantes importantes, ID_MAP_DATA et Warn, ID_MAP_DATA est l'id de la map par défauts et Warn sert à prévenir ou non en cas d'erreurs (évent inexistant / évent ayant déjà l'id) si vous voulez que ça n'affiche pas tout le temps le message d'un évent qui existe déjà mettez false à la place de true et ça n'affichera plus les messages.

Voilà, je pense avoir tout dit.


Dernière édition par Nuri Yuri le Sam 5 Nov - 12:35 (2011); édité 3 fois
Revenir en haut
Facebook Twitter
Publicité






MessagePosté le: Ven 4 Nov - 18:09 (2011)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Akito アート
Membre


Inscrit le: 21 Sep 2011
Messages: 773
Démon
Localisation: Néan
Masculin

MessagePosté le: Ven 4 Nov - 20:36 (2011)    Sujet du message: Téléporter un évent.

Merci beaucoup Yuri !
Revenir en haut
Kosuke Kyuu
Membre


Inscrit le: 09 Juin 2011
Messages: 87

MessagePosté le: Sam 5 Nov - 05:39 (2011)    Sujet du message: Téléporter un évent.

C'est excellent ça, merci beaucoup Yuri. ^^
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 5 Nov - 10:56 (2011)    Sujet du message: Téléporter un évent.

J'ai mis à jour le script, maintenant vous pouvez assigner un id à l'évent copié si vous le voulez, ça peut éviter d'avoir des problèmes avec les évents déjà existant sur la map.
Revenir en haut
Facebook Twitter
Suicune31
Membre


Inscrit le: 08 Aoû 2008
Messages: 1 161
Localisation: Haute-garonne (31)
Masculin

MessagePosté le: Sam 5 Nov - 11:59 (2011)    Sujet du message: Téléporter un évent.

Petit soucis pour moi ^^.
Ce script copie que l'apparence des évents et non les commande qui on été ajouter sur lui, je me trompe ?
Car javais trouver l'utilité de ce script en transférant un évent avec des commandes qui se lancerais à l'apparition de cet évent sur la map or, là, rien e se passe ^^.
C'est dommage :s.

tu pense pouvoir réglé ça ?

EDIT : Sinon si on pouvais supprimer tes évent par appel de script ça réglerais mon problème ^^,
           mais je préfère la première solution Imbécile heureux;
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 5 Nov - 12:34 (2011)    Sujet du message: Téléporter un évent.

Normalement ça doit copier les commandes, j'ai corrigé le bug de la suppression de l'évent quand il a un id différent. J'ai testé en PP et en DA et ça fonctionne...
Je met à jour le script dans le premier post, merci de m'avoir raporté les bugs, si ça marche toujours pas il faut que tu me montre les trucs en détails.
Revenir en haut
Facebook Twitter
Suicune31
Membre


Inscrit le: 08 Aoû 2008
Messages: 1 161
Localisation: Haute-garonne (31)
Masculin

MessagePosté le: Sam 5 Nov - 12:46 (2011)    Sujet du message: Téléporter un évent.

ça fonctionne Yuri, merci beaucoup Imbécile heureux
Revenir en haut
Kosuke Kyuu
Membre


Inscrit le: 09 Juin 2011
Messages: 87

MessagePosté le: Sam 5 Nov - 15:34 (2011)    Sujet du message: Téléporter un évent.

Oh très bien pour l'id de l'évènement choisis, c'est très utile, Merci.^^
Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 16:59 (2017)    Sujet du message: Téléporter un évent.

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