Partagez
Aller en bas
avatar
Elphealer
Membre

Nombre de messages : 52
Age : 29
Localisation : Lyon
Distinction : aucune
Date d'inscription : 07/12/2009

Pop up pour lors des gains niveaux

le Mar 29 Déc 2009 - 20:07
Bonsoir

Type de script:pop-up pour combat et hors combat
Explication complete:Voilà, est ce qu'il serait possible plutot que le petit message qui est en bat de faire une pop up pour le passage du level.
Spécificités:doit pouvoir apparaitre pdt les combats et hors de combats et à la fin d'un combat
Schéma très clair:Comme celle qui apparait dans les rapports de combat de Blockade (Voir le rapport de combat) .
Scripts déjà possédés: le Script de Blockade

Merci d'avance
avatar
dricc
Membre

Nombre de messages : 2756
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: Pop up pour lors des gains niveaux

le Mer 30 Déc 2009 - 9:06
Alors , j'en presque ce qu'il te faut .

En fait , il s'agit d'une fenetre qui apparait pour un gain quelconque (or,objet,xp) et il met un message si il y a passage de niveau . Elle disparait progressivement .

C'est une adaptation d'un script de woratana qui ne faisait que les objets .
Pour tout t'avouer , j'en suis pas super content de ce script . La fenetre est pas super jolie .

Je n'ai pas essayé mais je crains que ça ne fonctionne pas en combat .

pour utiliser le gain d'XP , il faut faire :
$scene.expwin(50,0, true,true,200)
Les parametres signifient :
50 : 50 XP gagné
0 : pour tout les acteurs , mettre l'actor_id si ce n'est que pour un
true : affichage d'un message en cas de level up
true : gain d'XP immediat
200 : temps d'attente avant fermeture de la popup

Spoiler:

#===============================================================
# ● [VX] ◦ Get Item Window ◦ □
# * Show window to tell player what item he/she got~
#--------------------------------------------------------------
# ◦ by Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Released on: 19/12/2008
# ◦ Version: 2.0
#--------------------------------------------------------------
# ● How to Use ●
#--------------------------------------------------------------
# Call script:
# $scene.new_itemwin(type, item_ID, quantity, *auto_add_item?, *wait_count)
# * type: 0 for Item, 1 for Weapon, 2 for Armor
# * Item_ID: ID of the item you want to show
# * Quantity: Amount of the item the player got
# * Auto_Add_Item (Optional): Do you want the script to add item for you?
# (Or you can just use event command to add item yourself)
# * Wait_Count (Optional): How long (in frame) the item window will stay on screen?
# (Default is 160 frames)
#--------------------------------------------------------------
# ● Examples ●
#--------------------------------------------------------------
# $scene.new_itemwin(0, 1, 5)
# ^ The window will show that player got 5 Potions.
# $scene.new_itemwin(0, 1, 5, true)
# ^ The window will show that player got 5 Potions and also add 5 Potions to
# player's inventory immediately.
# $scene.new_itemwin(0, 1, 5, false, 100)
# ^ The window will show that player got 5 Potions, but will not add 5 the items
# to player's inventory. The window will stay for 100 frames before dissappear.
#--------------------------------------------------------------
# ● Extra! ●
#--------------------------------------------------------------
# You can put an array in item_ID and the item will give out randomly,
# for example,
# $scene.new_itemwin(0, [1,2,3], 5, true)
# ^ It will randomly give 5 of Potion/Hi Potion/or Full Potion.
#--------------------------------------------------------------
# Dricc extension
#--------------------------------------------------------------
# traduction en français , si y'a qu'un objet , ne pas mettre de ' * 1'
# Ajout d'un gain d'or :
# $scene.goldwin(, , )
# $scene.goldwin(100,false,100)
# => vous met un message "vous avez gagné 100 or" mais vous devez mettre l'or dans l'event
# puis attend 100 frames avant de s'effacer
# Ajout d'un gain d'exp :
# $scene.goldwin(, , , , )
# $scene.goldwin(100,0,false,100)
# => vous met un message "vous avez gagné 100 or" mais vous devez mettre l'or dans l'event
# puis attend 100 frames avant de s'effacer
# A noter que le message de gain de niveau ne s'affichera pas si l'xp n'est pas ajouté tout de suite
#===============================================================

class Window_GetItem < Window_Base

def initialize(type, items, quantity, auto_add = false, wait_count = nil)
super(0,0, 200, WLH + 32)
self.z = 199
# Default Wait Count
wait_count = 160 if wait_count.nil?
@wait_count = wait_count
# if random item
case type
when 0; dbase = $data_items
when 1; dbase = $data_weapons
when 2; dbase = $data_armors
end
if items.is_a?(Array)
items = items[rand(items.size)]
end
items = dbase[items]
# THAI
# memname = $game_party.members.size == 1 ? $game_party.members[0].name : 'คุณ'
# text = memname + ' ได้รับ ' + items.name + ' x ' + quantity.to_s

# FRENCH
if quantity.to_s == 1 then
text = ' Vous obtenez : ' + items.name
else
text = ' Vous obtenez : ' + items.name + ' x ' + quantity.to_s
end

# Auto Add Item
$game_party.gain_item(items, quantity) if auto_add
#print auto_add
# Calculate Size
w_w = self.contents.text_size(text).width + 32 + 24 + 8
w_w = Graphics.width if w_w > Graphics.width
self.width = w_w
create_contents
self.x = (Graphics.width - self.width) / 2
self.y = (Graphics.height - self.height) / 2
# Draw Item Data
draw_icon(items.icon_index, 0, 0)
self.contents.draw_text(24 + 8, 0, self.contents.width, WLH, text)
@opac_per_sec = (255 / @wait_count) if @wait_count != 0
end

def update
if @wait_count > 0
@wait_count -= 1
self.opacity -= @opac_per_sec if !@opac_per_sec.nil?
else
dispose
end
end

end
# end classwindow_getitem

class GetItem_Controller
attr_accessor :data

def initialize
@data = []
end

def update
@data.each {|d| d.update if !d.nil? and !d.disposed?}
end

def terminate
@data.each {|d| d.dispose if (!d.nil? and !d.disposed?) }
end

def create(*args)
@data.each_index do |i|
if !@data[i].nil?
@data[i].dispose if !@data[i].disposed?
@data[i] = nil
end
end
@data.push (Window_GetItem.new(*args))
end
end

# ajout dricc : fenetre de gain d'or
class Window_Getgold < Window_Base

def initialize(quantity, auto_add = false, wait_count = nil)
super(0,0, 200, WLH + 32)
self.z = 199
# Default Wait Count
wait_count = 160 if wait_count.nil?
@wait_count = wait_count

# THAI
# memname = $game_party.members.size == 1 ? $game_party.members[0].name : 'คุณ'
# text = memname + ' ได้รับ ' + items.name + ' x ' + quantity.to_s

# Tout depend de la monnaie que vous avez choisi ....
# ici , vous pouvez relger le pluriel
if quantity.to_s == 1 then
text = ' Vous obtenez : ' + quantity.to_s + ' ' + Vocab.send ('gold')
else
text = ' Vous obtenez : ' + quantity.to_s + ' ' + Vocab.send ('gold')
end
# PEUX ETRE MODIFIE
gold_icon_index1 = 205 # icone pour gain de 1 or (une piece d'or dans l'iconset standard)
gold_icon_index = 147 # icone pour gain > 1 or (une bourse d'or dans l'iconset standard)

# Auto Add Item
$game_party.gain_gold(quantity) if auto_add
# Calculate Size
w_w = self.contents.text_size(text).width + 32 + 24 + 8
w_w = Graphics.width if w_w > Graphics.width
self.width = w_w
create_contents
self.x = (Graphics.width - self.width) / 2
self.y = (Graphics.height - self.height) / 2
# Draw Item Data
if quantity.to_s == 1 then
draw_icon(gold_icon_index1, 0, 0)
else
draw_icon(gold_icon_index, 0, 0)
end
self.contents.draw_text(24 + 8, 0, self.contents.width, WLH, text)
@opac_per_sec = (255 / @wait_count) if @wait_count != 0
end

def update
if @wait_count > 0
@wait_count -= 1
self.opacity -= @opac_per_sec if !@opac_per_sec.nil?
else
dispose
end
end

end
# end classwindow_getitem

class Getgold_Controller
attr_accessor :data

def initialize
@data = []
end

def update
@data.each {|d| d.update if !d.nil? and !d.disposed?}
end

def terminate
@data.each {|d| d.dispose if (!d.nil? and !d.disposed?) }
end

def create(*args)
@data.each_index do |i|
if !@data[i].nil?
@data[i].dispose if !@data[i].disposed?
@data[i] = nil
end
end
@data.push (Window_Getgold.new(*args))
end
end
# fin dricc add gold

# ajout dricc : fenetre de gain d'xp
class Window_Getexp < Window_Base

def initialize(quantity, actor_id , lvlup_mess = true, auto_add = true, wait_count = nil)
super(0,0, 200, WLH + 32)
self.z = 199
# Default Wait Count
wait_count = 160 if wait_count.nil?
@wait_count = wait_count

# Tout depend de la monnaie que vous avez choisi ....
# ici , vous pouvez relger le pluriel
if actor_id == 0 then
text1 = ' L\'equipe obtient ' + quantity.to_s + ' Exp'
else
text1 = $game_actor[actor_id].name + ' obtient ' + quantity.to_s + ' Exp'
end
# PEUX ETRE MODIFIE
xp_icon_index = 135 # icone pour gain d'xp
lv_icon_index = 27 # icone pour gain d'xp avec level up
nb_level_up = 0

# Auto Add Item
text2 = ''
text3 = ''
text4 = ''
if auto_add then
if actor_id ==0 then
for actor in $game_party.members
old_level = actor.level
actor.change_exp(actor.exp + quantity, false)

if old_level != actor.level then
nb_level_up +=1
if nb_level_up <=2 then
text2 = text2 + actor.name + ' Niveau ' + actor.level.to_s + ' '
else
if nb_level_up <=4 then
text3 = text3 + actor.name + ' Niveau ' + actor.level.to_s + ' '
else
text4 = text4 + actor.name + ' Niveau ' + actor.level.to_s + ' '
end
end
end
end
else
actor = $game_party.members[actor_id]
actor.change_exp(actor.exp + quantity, false)
end
end
# Calculate Size
w_w = self.contents.text_size(text1).width + 32 + 24 + 8
if self.contents.text_size(text2).width > w_w - 32 - 24- 8 then
w_w = self.contents.text_size(text2).width + 32 + 24 + 8
end
if self.contents.text_size(text3).width > w_w - 32 - 24- 8 then
w_w = self.contents.text_size(text3).width + 32 + 24 + 8
end
if self.contents.text_size(text4).width > w_w - 32 - 24- 8 then
w_w = self.contents.text_size(text4).width + 32 + 24 + 8
end
w_w = Graphics.width if w_w > Graphics.width
self.width = w_w
self.height = self.height + 24 if text2 != nil
self.height = self.height + 24 if text3 != nil
self.height = self.height + 24 if text4 != nil
create_contents
self.x = (Graphics.width - self.width) / 2
self.y = (Graphics.height - self.height) / 2
# Draw Item Data
if nb_level_up > 0 then
draw_icon(lv_icon_index, 0, 0)
else
draw_icon(xp_icon_index, 0, 0)
end
self.contents.draw_text(24 + 8, 0, self.contents.width, WLH, text1)
if text2 != nil then
self.contents.draw_text(24 + 8, 24, self.contents.width, WLH, text2)
end
if text3 != nil then
self.contents.draw_text(24 + 8, 48, self.contents.width, WLH, text3)
end
if text4 != nil then
self.contents.draw_text(24 + 8, 72, self.contents.width, WLH, text4)
end
@opac_per_sec = (255 / @wait_count) if @wait_count != 0
end

def update
if @wait_count > 0
@wait_count -= 1
self.opacity -= @opac_per_sec if !@opac_per_sec.nil?
else
dispose
end
end

end
# end classwindow_getitem

class Getexp_Controller
attr_accessor :data

def initialize
@data = []
end

def update
@data.each {|d| d.update if !d.nil? and !d.disposed?}
end

def terminate
@data.each {|d| d.dispose if (!d.nil? and !d.disposed?) }
end

def create(*args)
@data.each_index do |i|
if !@data[i].nil?
@data[i].dispose if !@data[i].disposed?
@data[i] = nil
end
end
@data.push (Window_Getexp.new(*args))
end
end
# fin dricc add exp


class Scene_Map < Scene_Base
alias wora_scemap_str_getitemwin start
alias wora_scemap_upd_getitemwin update
alias wora_scemap_ter_getitemwin terminate

def start
wora_scemap_str_getitemwin
@getitem_control = GetItem_Controller.new
@getgold_control = Getgold_Controller.new
@getexp_control = Getexp_Controller.new
end

def update
wora_scemap_upd_getitemwin
@getitem_control.update
@getgold_control.update
@getexp_control.update
end

def terminate
@getitem_control.terminate
@getgold_control.terminate
@getexp_control.terminate
wora_scemap_ter_getitemwin
end

# Create Get Item Window
def new_itemwin(*args)
@getitem_control.create(*args)
end
# Create Get gold Window
def goldwin(*args)
@getgold_control.create(*args)
end
# Create Get exp Window
def expwin(*args)
@getexp_control.create(*args)
end
end

Si jamais tu as le GTBS :
Spoiler:

#add for GTBS
class Scene_Battle_TBS < Scene_Base
alias wora_scemap_str_getitemwin start
alias wora_scemap_upd_getitemwin update
alias wora_scemap_ter_getitemwin terminate

def start
wora_scemap_str_getitemwin
@getitem_control = GetItem_Controller.new
@getgold_control = Getgold_Controller.new
@getexp_control = Getexp_Controller.new
end

def update
wora_scemap_upd_getitemwin
@getitem_control.update
@getgold_control.update
@getexp_control.update
end

def terminate
@getitem_control.terminate
@getgold_control.terminate
@getexp_control.terminate
wora_scemap_ter_getitemwin
end

# Create Get Item Window
def new_itemwin(*args)
@getitem_control.create(*args)
end
# Create Get gold Window
def goldwin(*args)
@getgold_control.create(*args)
end
# Create Get exp Window
def expwin(*args)
@getexp_control.create(*args)
end
end
avatar
Elphealer
Membre

Nombre de messages : 52
Age : 29
Localisation : Lyon
Distinction : aucune
Date d'inscription : 07/12/2009

Re: Pop up pour lors des gains niveaux

le Mer 30 Déc 2009 - 10:55
Ok, j'essaye ça cette aprem' et je te tiens au courant.

Edit : Après avoir regardé comment marche ton script, ce n'est effectivement pas tout à fait ce que je cherche ^^
Je voulais une pop up pour les gains de niveau pas pour les gains d'XP.
Contenu sponsorisé

Re: Pop up pour lors des gains niveaux

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