Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Interviews: Ephy / Tutos: Godot : Premier Contact -Partie (...) / Tutos: Godot : Premier Contact -Partie (...) / Making-of: Ma première game jam classée / Jeux: Oracle of Tao / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

101 connectés actuellement

11006388 visiteurs
depuis l'ouverture

999 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

ConsoleFun

Le Studio du Chat Vert

RPG Maker Détente

Eclipso

Zarok

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [VX Ace] Demande de script pour importer/exporter personnage


Yearl - posté le 08/07/2012 à 15:12:25 (67 messages postés)

❤ 0

Domaine concerné: Script
Logiciel utilisé: VX Ace
Bonjour à tous !

Je fais une demande pour un script un peu complexe ! :)

J'aimerai avoir un script permettant d'importer/exporter un personnage choisit .. Je m'explique :

Mon jeu est constitué d'un personnage principal, on peut lui choisir son apparence son nom ..etc..
J'aimerai que le script récupère toutes les informations du personnage ( Lvl, Nom, apparence, equipements, stats et je crois que c'et tout).
Que ces informations sois enregistrer dans un fichier annexe et que par la suite avec une autres sauvegarde,
on puisse récupérer ce joueur !
On pourrait donc ce partager nos personnages entre sauvegardes !! (Non je ne suis pas fan de Dragon's Dogma :D )

Je ne pense pas que sa soit très facile mais si quelqu'un veut relevé le défi qu'il n'hésite pas !
En attendant merci d'avoir lu et bon making ;)


Mack - posté le 08/07/2012 à 15:34:35 (2019 messages postés)

❤ 0

A mon avis, au contraire c'pas compliqué.
J'vais jeter un oeil.

( Par contre t'auras intérer à avoir les même fichiers dans les jeux quoi ... )

( Je prend note de tout les commentaires, même si je n'y répond pas )


Yearl - posté le 08/07/2012 à 15:41:04 (67 messages postés)

❤ 0

Oui normalement les versions des jeux seront les mêmes ! :D

Ah et j'ai oublié de préciser mais il faudrait que le script est 3 fonctions appelable par évènement:
-Pour exporter
-Pour importer
-Pour supprimer un perso importer

Et je pense qu'il faudrait faire en sorte de pas pouvoir importer son propre personnage si possible !
Par ce que bon .. Vive la triche quoi .. :doute6

J'espère que tu y arrivera,
Merci beaucoup en tout cas !


Mack - posté le 08/07/2012 à 16:14:27 (2019 messages postés)

❤ 0

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 
class Game_Interpreter
  
  def save_actor(id)
    File.open("Actor_"+id.to_s+".rvdata2", "wb") do |file|
      actor = $game_actors[id]
      Marshal.dump(actor, file)
    end
  end
  
  def load_actor(id)
    File.open("Actor_"+id.to_s+".rvdata2", "rb") do |file|
      actor = Marshal.load(file)
      $game_actors.data[id] = actor
    end
    $game_player.refresh
  end
  
end
 
class Game_Actors
  attr_accessor :data
end



Ça te permet donc d'exporter/importe un personnage selon son id.
Pour exporter tu fais :

Portion de code : Tout sélectionner

1
save_actor(id)


Et pour importer :

Portion de code : Tout sélectionner

1
load_actor(id)


id étant l'id du héros dans la BDD.
( Commande insérer un script dans un évent. )


Pour les restrictions, c'est plus ou moins impossible.
Faudrait que chaque jeu télécharger ai son id à lui, hors, je pense pas que cela soit faisable.

T'entends quoi par supprimer un perso importer ?

Parce que de toute façon, le script va remplacer le perso du même id au chargement du nouveau.
Donc à moins de le remettre "à neuf" ( comme s'il venait de rentrer dans l'équipe ), j'vois pas comment faire. ( Et donc ça aurait aucun intérêt )

( Je prend note de tout les commentaires, même si je n'y répond pas )


Yearl - posté le 08/07/2012 à 16:20:30 (67 messages postés)

❤ 0

Bah enfaite le personnage importer se stockerai en plus dans l'équipe, pas à la place du premier c'est pour sa ! :)

Plus précisement le mieux serait que cela exporte l'Id 1 mais qu'après en important sa le mette sur l'ID 10 !

Ah bah enfaite c'est bon ton script marche nickel il suffit juste de renommer le fichie actor_1 par actor_10
Après le load je met 10 comme ID
Et sa marche !!! :D

Merci beaucoup beaucoup !!


Mack - posté le 08/07/2012 à 16:37:32 (2019 messages postés)

❤ 0

Ah ...

C'est pas pour te vexer, mais je pense que tu cherches à faire un truc bancal comme pas permis ...

Comment le programme doit savoir quel personnage supprimer ?
Selon les personnages importé, ils auront pas la même id ...


Si tu comptes faire un truc dans le même genre que les unités dans FFTA, j'pense pas que tu y arriveras.

J'peux toujours essayer de te le faire, mais à mon avis, c'est pas une bonne idée de rajouter des perso en plus.
( Je sais de quoi je parle, j'avais commencé un truc du genre sous XP )

( Je prend note de tout les commentaires, même si je n'y répond pas )


Yearl - posté le 08/07/2012 à 16:40:40 (67 messages postés)

❤ 0

Bah enfaite l'exportation et l'importation fonctionne comme je veux ..
A part un hic, l'equipement ne se conserve pas, sa sauvegarde celui initiale ..

Tu vois comment tu peux résoudre le probleme ?..



Ps: Pour ce que tu viens de dire, il ne peut y avoir qu'un personnage importer et il sera obligatoirement sur l'ID 10 donc pour le supprimer je peux le faire avec un simple evenement et il ne devrai pas y avoir de probleme de remplacement !


Mack - posté le 08/07/2012 à 16:47:48 (2019 messages postés)

❤ 0

T'as bien changer l'id dans ta commande ?
Parce que chez moi, aucun soucis pour sauvegarder/charger les autres héros.


Ah, s'il y en a qu'un seul, ça peut se faire.

EDIT : Donc c'est aussi le 10 qui doit être sauvegarder et charger ?

( Je prend note de tout les commentaires, même si je n'y répond pas )


Yearl - posté le 08/07/2012 à 16:48:55 (67 messages postés)

❤ 0

Finnallement ya que l'equipement qui se conserve pas ! Sa garde celui initial !..


Mack - posté le 08/07/2012 à 16:57:53 (2019 messages postés)

❤ 0

Comment ça ? ...
Si je change l'équipement de mon héros, que je sauvegarde, que je quitte, et que je recharge, moi j'obtient bien l'équipement que j'avais quand j'ai sauvegarder ...

Donc c'est aussi le 10 qui doit être sauvegarder et charger ?

( Je prend note de tout les commentaires, même si je n'y répond pas )


Yearl - posté le 08/07/2012 à 17:02:50 (67 messages postés)

❤ 0

Moi le héros exporter puis importer ne conserve pas son equipement ..
Ca lui met l'equipement initial ..

EDIT: Ah ui dakor si tu l'importe dans la meme partie tout fonctionne, meme l'equipement !
MAsi si tu importe a partir d'une autre partie, lequipement ne se charge pas,
il charge celui qui est équipé actuellement sur l'ID 1 (un peu dur a expliquer tout sa)

Et sinon c'est l'ID 1 qui doit etre exporter puis ca doit l'importer sur l'ID 10 :)


Mack - posté le 08/07/2012 à 17:08:33 (2019 messages postés)

❤ 0

Mon Héros est équiper de "Epée de Bronze". Je sauvegarde, je change son arme par "Epée de Fer". J'importe mon Héros, il se retrouve avec une Epée de Bronze.
Chez moi ça marche très bien comme ça. J'ai mal compris c'que tu voulais ?

Okay, j'devrait pas en avoir pour longtemps alors.

EDIT :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
 
class Game_Interpreter
  
  def save_actor
    actor = $game_actors[1]
    File.open("Actor_Imported.rvdata2", "wb") do |file|
      Marshal.dump(actor, file)
    end
  end
  
  def load_actor
    File.open("Actor_Imported.rvdata2", "rb") do |file|
      actor = Marshal.load(file)
      $game_actors.data[10] = actor
    end
    $game_party.add_actor(10)
    $game_player.refresh
  end
  def delete_actor
    $game_party.remove_actor(10)
    $game_actors.data[10] = nil
  end
  
end
 
class Game_Actors
  attr_accessor :data
end



Même commandes, mais t'as plus besoin de donner un id, il va toujours te sauvegarder ton héros 1, et remplacer le héros 10.
( Un soucis de taille va se poser concernant la duplication d'items par contre. Et j'vois pas comment l'empêcher ... )

Pour supprimer le héros 10 tu fais :

Portion de code : Tout sélectionner

1
delete_actor



( Je prend note de tout les commentaires, même si je n'y répond pas )


Yearl - posté le 08/07/2012 à 17:13:05 (67 messages postés)

❤ 0

Regarde l'edit que j'ai mis au dessus au cas ou tu l'es pas vu :)
Et si tu as tres bien compris, jusye fais le meme test mais fais une nouvelle partie avant d'importer le perso !

EDIT: Enfaite le probleme exact c'est que le logiciel mélange l'equipement de l'ID1 et de l'ID10 ..
Quand tu modifi le 10 , sa modifi le 1 egalement et inversement ..
Et merci le nouveau code marche aussi bien :)

Tu saurai comment eviter que les equipements se "mélangent comme sa" ?


Mack - posté le 08/07/2012 à 17:23:36 (2019 messages postés)

❤ 0

Non, ça change pas l'équipement de l'un ou de l'autre. En faite, c'est qu'ils ont un id en commun, que j'avais oublier de changer, et du coup, quand tu ouvrais l'équipement du héros importer, ça t'ouvrais celui du héros 1.

Avec ce code c'est réparé :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
 
class Game_Interpreter
  
  def save_actor
    actor = $game_actors[1].dup
    actor.actor_id = 10
    File.open("Actor_Imported.rvdata2", "wb") do |file|
      Marshal.dump(actor, file)
    end
  end
  
  def load_actor
    File.open("Actor_Imported.rvdata2", "rb") do |file|
      actor = Marshal.load(file)
      $game_actors.data[10] = actor
    end
    $game_party.add_actor(10)
    $game_player.refresh
  end
  def delete_actor
    $game_party.remove_actor(10)
    $game_actors.data[10] = nil
  end
  
end
 
class Game_Actors
  attr_accessor :data
end
class Game_Actor < Game_Battler
  attr_accessor :actor_id
end



( Je prend note de tout les commentaires, même si je n'y répond pas )


Yearl - posté le 08/07/2012 à 17:30:30 (67 messages postés)

❤ 0

Perfect ! ;)
Merci beaucoup ! :)

Maintenant je vais te demander un autre truc mais sa je pense pas que sa soit possible ..
J'aimerai savoir sil est possible de faire en sorte que l'équipement du personnage importer
ne puisse pas être modifier ..??


Mack - posté le 08/07/2012 à 17:35:29 (2019 messages postés)

❤ 0

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
 
class Game_Interpreter
  
  def save_actor
    actor = $game_actors[1].dup
    actor.actor_id = 10
    File.open("Actor_Imported.rvdata2", "wb") do |file|
      Marshal.dump(actor, file)
    end
  end
  
  def load_actor
    File.open("Actor_Imported.rvdata2", "rb") do |file|
      actor = Marshal.load(file)
      $game_actors.data[10] = actor
    end
    $game_party.add_actor(10)
    $game_player.refresh
  end
  def delete_actor
    $game_party.remove_actor(10)
    $game_actors.data[10] = nil
  end
  
end
 
class Game_Actors
  attr_accessor :data
end
class Game_Actor < Game_Battler
  attr_accessor :actor_id
  def equip_type_fixed?(etype_id)
    if @actor_id == 10
      return true
    else
      return features_set(FEATURE_EQUIP_FIX).include?(etype_id)
    end
  end
end



( Je prend note de tout les commentaires, même si je n'y répond pas )


Yearl - posté le 08/07/2012 à 17:40:34 (67 messages postés)

❤ 0

Enfaite pour quelqu'un qui c'est scripté c'est facile apperement ! ^^

Merci encore d'avoir pris du temps pour moi !!! :D

EDIT : Dernière petite mise au point, est ce que tu pourrait faire en sorte que sa plante pas
quand ya pas de fichier ?
Juste que sa marque un truc "Fichier non trouvé" ?


Mack - posté le 08/07/2012 à 18:39:28 (2019 messages postés)

❤ 0

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
 
class Game_Interpreter
  
  def save_actor
    actor = $game_actors[1].dup
    actor.actor_id = 10
    File.open("Actor_Imported.rvdata2", "wb") do |file|
      Marshal.dump(actor, file)
    end
  end
  
  def load_actor
    if FileTest.exist?("Actor_Imported.rvdata2") 
      File.open("Actor_Imported.rvdata2", "rb") do |file|
        actor = Marshal.load(file)
        $game_actors.data[10] = actor
      end
      $game_party.add_actor(10)
      $game_player.refresh
    end
  end
  def delete_actor
    $game_party.remove_actor(10)
    $game_actors.data[10] = nil
  end
  
end
 
class Game_Actors
  attr_accessor :data
end
class Game_Actor < Game_Battler
  attr_accessor :actor_id
  def equip_type_fixed?(etype_id)
    if @actor_id == 10
      return true
    else
      return features_set(FEATURE_EQUIP_FIX).include?(etype_id)
    end
  end
end



Pas de message d'erreur, mais à ma connaissance, ils ont virer la possibilité d'afficher une textbox ...

( Je prend note de tout les commentaires, même si je n'y répond pas )


Yearl - posté le 08/07/2012 à 19:26:07 (67 messages postés)

❤ 0

Merci, sa évite comeme le crash !! :)
Bonne soirée ;)

EDIT: Dukou Mack, petite question:
Bloqué l'équipement de quelqu'un comme sa on peut le faire par évenement ?
Si oui je viens bien que tu me dise ou paske je trouve pas et sinon, est ce que tu aurai encore du temps pour me faire un petit script qui bloquerai l'equipement par ID, dans lequel je pourrait définir plusieur ID ?
(Un script automatique, qui n'aurai pas besoin d'etre appelé)


Mack - posté le 08/07/2012 à 21:01:16 (2019 messages postés)

❤ 0

A la ligne 41 t'as :

Portion de code : Tout sélectionner

1
if @actor_id == 10


Modifies en :

Portion de code : Tout sélectionner

1
if @actor_id == 10 or @actor_id == X or @actor_id == Y


( Rajoutes "or @actor_id == X" avec X l'id de ton héros )

( La flemme de chercher dans le log, mais je sais que c'est possible de le faire nativement )

( Je prend note de tout les commentaires, même si je n'y répond pas )


Yearl - posté le 08/07/2012 à 21:07:07 (67 messages postés)

❤ 0

Ok merci beaucoup !! :)

Index du forum > Entraide > [RESOLU] [VX Ace] Demande de script pour importer/exporter personnage

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers