Partagez
Aller en bas
Tink
Tink
Membre

Nombre de messages : 407
Age : 28
Localisation : Finistère (Bretagne)
Distinction : aucune
Date d'inscription : 12/08/2008
http://network-rpg-maker.site.voila.fr

Conserver les possessions d'un perso Empty Conserver les possessions d'un perso

le Mer 4 Fév 2009 - 16:53
Bonjour à tous et merci d'avance pour le temps que vous voudrez bien accorder à mon petit problème :

Ça part d'un constat tout bête : beaucoup de rpg amènent à sauter d'un personnage ou groupe de personnages à un autre en cours d'aventure. C'est aussi quelque chose que je voudrais intégrer à mon projet, mais le problème se pose alors : lorsqu'on passe à l'autre groupe de persos, l'inventaire demeure le même. Ce groupe peut bien habiter à l'autre bout du monde et n'avoir rien en commun avec le premier, il dispose quand même des objets durement accumulés par la première équipe...

Comment faire pour avoir des inventaires séparés pour chaque groupe, de manière à ce que ce que possède l'un soit conservé quelque part pendant qu'on joue avec l'autre, et qu'on puisse les fusionner quand les deux équipes se rejoignent ?

Autre petite question : Lorsqu'un personnage quitte le groupe pendant un moment pour finir par le rejoindre, que devient l'inventaire qu'il possédait avant son départ, ses niveaux, les pvs gagnés en plus via graines de vie et autres... ?

Merci d'avance, encore une fois. Bon making à tous !
ASHKA
ASHKA
Membre

Nombre de messages : 242
Age : 37
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008

Conserver les possessions d'un perso Empty Re: Conserver les possessions d'un perso

le Jeu 5 Fév 2009 - 11:15
Yo !!

J'ai recemment eu l'occasion de réaliser un script qui permet justement de gerer simultanement plusieurs equipes.
( Membres, inventaires, or, et même pas )
Laisse moi le temps de le rendre utilisable par tous ( et aussi gerer la réunion des equipes ), et il est à toi !!

Quant à l'autre question :
Les personnage n'ont pas d'inventaire, seul l'equipe en a, les objets restent avec l'equipe.
Mais il emporte son equipement avec lui.
Son evolution est conservé sauf si tu coche la case "Remise à zero" lors de sa ré-integration.

ASHKA
yamazaki
yamazaki
Membre

Nombre de messages : 74
Distinction : aucune
Date d'inscription : 26/12/2008

Conserver les possessions d'un perso Empty Re: Conserver les possessions d'un perso

le Jeu 5 Fév 2009 - 11:33
Salut
Ne peut on pas faire des sacs d'objet individuel?
ASHKA
ASHKA
Membre

Nombre de messages : 242
Age : 37
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008

Conserver les possessions d'un perso Empty Re: Conserver les possessions d'un perso

le Jeu 5 Fév 2009 - 15:07
Ok, voila pour toi Tink :

[code]###################################
=begin MODE D'EMPLOI
Pour changer d'equipe, il faut utiliser l'insertion de script :

change_equipe(code)

Le code de chaque equipe sera defini ci-dessous

Pour reunir deux equipes, il faut utiliser l'insertion de script :

reunir_equipe(new, old1, old2)

new, old1, old2 sont des codes d'equipes
new designe l'equipe que vous controlerez apres la réunion.
( Ca peut etre une nouvelle equipe ou l'une des deux equipes réuni )
old1 et old2 sont les codes des equipes que vous souhaitez réunir.

Exemple :

reunir_equipe(4, 0, 2)

L'equipe 4 recevra les membres, l'inventaire et l'argent des equipes 0 et 2.

reunir_equipe(4, 4, 2)

L'equipe 4 recevra les membres, l'inventaire et l'argent de l'equipe 2.
=end
###################################
module Multi_equipe
# Indiquer ici le nombre maximum d'equipe que vous allez créer :
# ( Utilisé pour initialiser les valeurs )
Max = 5

Info = {}
# Configurer ici l'etat inital des equipes :
# Au minimum, un membre par equipe, le reste est facultatif !!
# Configuration pour equipe Code 0
Info[0] = { "equipe" => [], # Rien car equipe de depart ( donc defini dans le BDD )
"or" => 500, # Commence avec 500 G
"obj" => [[1, 5]], # Commence avec 5 potions ( pour chaque bloc => [ ID objet, quantité ]
"arme" => [], # Aucune arme ( hormis celle equipé, evidement )
"armure" => [] # Aucune armure ( hormis ce qui est equipé evidement )
}

# Configurer ici l'etat inital des equipes :
# Au minimum, un membre par equipe, le reste est facultatif !!
# Configuration pour equipe Code 1
Info[1] = { "equipe" => [2, 3], # ID des membres de depart de cette equipe
"or" => 500, # Commence avec 500 G
"obj" => [[1, 5]], # Commence avec 5 potions ( pour chaque bloc => [ ID objet, quantité ]
"arme" => [[1, 5]], # Aucune arme ( hormis celle equipé, evidement )
"armure" => [] # Aucune armure ( hormis ce qui est equipé evidement )
}

# Configurer ici l'etat inital des equipes :
# Au minimum, un membre par equipe, le reste est facultatif !!
# Configuration pour equipe Code 2
Info[2] = { "equipe" => [4, 5], # Rien car equipe de depart ( donc defini dans le BDD )
"or" => 500, # Commence avec 500 G
"obj" => [[1, 5]], # Commence avec 5 potions ( pour chaque bloc => [ ID objet, quantité ]
"arme" => [], # Aucune arme ( hormis celle equipé, evidement )
"armure" => [] # Aucune armure ( hormis ce qui est equipé evidement )
}

# Configurer ici l'etat inital des equipes :
# Au minimum, un membre par equipe, le reste est facultatif !!
# Configuration pour equipe Code 3
Info[3] = { "equipe" => [6, 7], # Rien car equipe de depart ( donc defini dans le BDD )
"or" => 500, # Commence avec 500 G
"obj" => [[1, 5]], # Commence avec 5 potions ( pour chaque bloc => [ ID objet, quantité ]
"arme" => [], # Aucune arme ( hormis celle equipé, evidement )
"armure" => [[1, 5]] # Aucune armure ( hormis ce qui est equipé evidement )
}

# Configurer ici l'etat inital des equipes :
# Au minimum, un membre par equipe, le reste est facultatif !!
# Configuration pour equipe Code 4
Info[4] = { "equipe" => [8], # Rien car equipe de depart ( donc defini dans le BDD )
"or" => 500, # Commence avec 500 G
"obj" => [[1, 5]], # Commence avec 5 potions ( pour chaque bloc => [ ID objet, quantité ]
"arme" => [], # Aucune arme ( hormis celle equipé, evidement )
"armure" => [] # Aucune armure ( hormis ce qui est equipé evidement )
}

# MAX fixé à 5 donc augmenter la limite avant de créer de nouvelles equipes !!!

# Indiquer ici le code de l'equipe que l'on controle des le debut
Depart = 0
end
###################################
class Game_Party < Game_Unit
def initialize
super
@equipe = Multi_equipe::Depart
@gold = {}
@steps = {}
@last_item_id = 0
@last_actor_index = 0
@last_target_index = 0
@actors = {}
@items = {}
@weapons = {}
@armors = {}
for x in 0...Multi_equipe::Max
ref = Multi_equipe::Info[x]
@gold[x] = ref["or"]
@steps[x] = 0
@actors[x] = ref["equipe"]
@items[x] = {}
for bloc in ref["obj"]
@items[x][bloc[0]] = bloc[1]
end
@weapons[x] = {}
for bloc in ref["arme"]
@weapons[x][bloc[0]] = bloc[1]
end
@armors[x] = {}
for bloc in ref["armure"]
@armors[x][bloc[0]] = bloc[1]
end
end
end

def get_equipe
return @equipe
end

def set_equipe(num)
@equipe = [[num, 0].max, Multi_equipe::Max].min
end

def gold
return @gold[get_equipe]
end

def steps
return @steps[get_equipe]
end

def reunir_equipe(new, old1, old2)
set_equipe(new)
for code in [old1, old2]
next if code == new
gain_gold(@gold[code])
@gold[code] = 0
for id in @actors[code]
add_actor(id)
end
@actors[code].clear
for i in @items[code].keys.sort
item = $data_items[i]
n = @items[code][i]
gain_item(item, n)
@items[code][i] = 0
end
for i in @weapons[code].keys.sort
item = $data_weapons[i]
n = @weapons[code][i]
gain_item(item, n)
@weapons[code][i] = 0
end
for i in @armors[code].keys.sort
item = $data_armors[i]
n = @armors[code][i]
gain_item(item, n)
@armors[code][i] = 0
end
end
end

def members
result = []
for i in @actors[get_equipe]
result.push($game_actors[i])
end
return result
end

def items
result = []
for i in @items[get_equipe].keys.sort
result.push($data_items[i]) if @items[get_equipe][i] > 0
end
for i in @weapons[get_equipe].keys.sort
result.push($data_weapons[i]) if @weapons[get_equipe][i] > 0
end
for i in @armors[get_equipe].keys.sort
result.push($data_armors[i]) if @armors[get_equipe][i] > 0
end
return result
end

def setup_starting_members
for i in $data_system.party_members
@actors[Multi_equipe::Depart].push(i)
end
end

def name
if @actors[get_equipe].size == 0
return ''
elsif @actors[get_equipe].size == 1
return members[0].name
else
return sprintf(Vocab::PartyName, members[0].name)
end
end

def max_level
level = 0
for i in @actors[get_equipe]
actor = $game_actors[i]
level = actor.level if level < actor.level
end
return level
end

def add_actor(actor_id)
if @actors[get_equipe].size < MAX_MEMBERS and not @actors[get_equipe].include?(actor_id)
@actors[get_equipe].push(actor_id)
$game_player.refresh
end
end

def remove_actor(actor_id)
@actors[get_equipe].delete(actor_id)
$game_player.refresh
end

def gain_gold(n)
@gold[get_equipe] = [[@gold[get_equipe] + n, 0].max, 9999999].min
end

def increase_steps
@steps[get_equipe] += 1
end

def item_number(item)
case item
when RPG::Item
number = @items[get_equipe][item.id]
when RPG::Weapon
number = @weapons[get_equipe][item.id]
when RPG::Armor
number = @armors[get_equipe][item.id]
end
return number == nil ? 0 : number
end

def gain_item(item, n, include_equip = false)
number = item_number(item)
case item
when RPG::Item
@items[get_equipe][item.id] = [[number + n, 0].max, 99].min
when RPG::Weapon
@weapons[get_equipe][item.id] = [[number + n, 0].max, 99].min
when RPG::Armor
@armors[get_equipe][item.id] = [[number + n, 0].max, 99].min
end
n += number
if include_equip and n < 0
for actor in members
while n < 0 and actor.equips.include?(item)
actor.discard_equip(item)
n += 1
end
end
end
end

def all_dead?
if @actors[get_equipe].size == 0 and not $game_temp.in_battle
return false
end
return existing_members.empty?
end
end
###################################
class Game_Interpreter
def change_equipe(num)
$game_party.set_equipe(num)
$game_player.refresh
end
def reunir_equipe(new, old1, old2)
$game_party.reunir_equipe(new, old1, old2)
$game_player.refresh
end
end
###################################
[/code]

Je te laisse tester et dire ce que tu en pense.

- Gestion de plusieurs equipes en parallele.
- Possibilité de réunir des equipes.

Par contre, pour diviser une equipe en deux groupes, faudra passer par une scene pour pouvoir choisir la repartition membre/inventaire/argent.
Je m'y mettrais quand j'aurais un peu de temps.
Si tu veux un truc particulier, fait moi un schema !!

Edit : Mais euh, c'est quoi ce delire !!

ASHKA
Tink
Tink
Membre

Nombre de messages : 407
Age : 28
Localisation : Finistère (Bretagne)
Distinction : aucune
Date d'inscription : 12/08/2008
http://network-rpg-maker.site.voila.fr

Conserver les possessions d'un perso Empty Re: Conserver les possessions d'un perso

le Jeu 5 Fév 2009 - 20:34
Un jour j'arriverai à faire ça, moi aussi...
En attendant : Conserver les possessions d'un perso 418140
Merci beaucoup ! Je vais tester ça tout de suite...
C'est quand même dommage que rien ne soit prévu à la base pour gérer ça. C'est quand même une fonction assez classique des rpg :/

P.S : quand je parlait d'inventaire du personnage, je voulais dire ses équipements, je me suis mal exprimé :s
Merci donc pour la réponse ! Smile

[Edit : J'ai passé quelque minutes à tester les fonctionnalités du script dans tous les sens et voilà mon rapport :
- Le passage d'une équipe à l'autre s'opère correctement. Les objets, l'or et les personnages disparaissent lorsqu'on passe à une nouvelle équipe pour être remplacer par ceux de celle-ci, comme prévu.
- De la même manière, ils reviennent bien lorsqu'on reprend la première équipe.
- Attention toutefois : si on mélange, par exemple, l'équipe 1 et l'équipe 2 dans l'équipe 3, les équipes 1 et 2 deviennent des équipes vides.
- Si le mélange de ces 3 équipes doit donner un groupe de plus de 4 personnages, l'équipe obtenue est constituée d'abord des personnages de la nouvelle (ici la 3), puis, si il reste de la place, se voit combler avec les premiers persos de la liste à ajouter (donc les premiers de l'équipe 1, dans cet exemple).
- Si certains membres n'ont pas pu être ajoutés par manque de place, leur équipe se retrouve tout de même vidée.
- Lorsqu'on on change d'équipe pour adopter une équipe vide, on peut se déplacer sur la carte, mais on ne voit pas le personnage (ben oui, vu que y'en a plus ^^) et on perd dès qu'un combat se déclenche, faute de combattants à aligner.
- Ajouter un personnage à l'équipe via l'évènement "modifier l'équipe" ajoute durablement ledit personnage au groupe. Ainsi, vous pouvez toujours réutiliser une équipe précédemment vidée en la sélectionnant, puis en y ajoutant les personnages de votre choix par simple commande évènementielle.
- Si le personnage ainsi ajouté faisait déjà partie d'une autre équipe, il fais alors partie des 2 équipes !
- Retirer un personnage fonctionne de la même manière.
Voilà ce que j'ai pu constater. Je dirais que ce script est une réussite qui permet d'ajouter bien du réalisme au jeu ! En tout cas, ça permet de régler mon problème, alors encore merci de faire profiter la communauté de ce script, Ashka ! Very Happy
A part la possibilité de diviser une équipe en deux et répartir ses possessions, je ne vois pas d'autres ajouts utiles à inclure au script... ]
Contenu sponsorisé

Conserver les possessions d'un perso Empty Re: Conserver les possessions d'un perso

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum