Jump to content
Rpg²S Forum
  • 0

Suddividere gli oggetti(equip.rarità ecc)


MasterSion
 Share

Question

Salve a tutti cerco uno script o un aiuto per suddividere gli oggetti nel menù in equip. rarità e gli oggetti normali :smile:

 

 

In realtà cerco anche un altro script (non deve andare conflitto con il bs alla FFX) che mostri l'arma equipaggiata durande le battaglie come il bs laterale di ccoa

 

ringrazio in anticipo

Edited by MasterSion

http://img256.imageshack.us/img256/7639/ihateyou.gif

Un uomo senza religione è come un pesce senza bicicletta.

http://img18.imageshack.us/img18/3668/decasoft1.png

http://rpg2s.net/gif/SCContest1Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gif

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Ciao^^ Se cerchi bene nella Sezione RGSS ci dovrebbero essere entrami gli Scripts che cerchi ;)

(ora non ho tempo, altrimenti avrei segnalato i Link^^).

http://th09.deviantart.net/fs26/150/f/2008/091/7/3/Rule_of_Rose__brush__by_maelstromb.png

Coming http://i56.tinypic.com/fu56c6.png Soon...

http://fc06.deviantart.net/fs47/f/2009/163/8/a/Polka_from_Eternal_Sonata_by_oOLuccianaOo.pnghttp://fc00.deviantart.com/fs34/f/2008/306/2/d/Icon_Hojo_by_Sasori_donna.gif

Link to comment
Share on other sites

  • 0

Guarda che ho cercato prima di aprire un nuovo topic... cmq se hai trovato di questi script il link perfavore :smile:

Per prima cosa nel mio progetto utilizzo il bs laterale di charlie (ffx style).

Adesso sto cercando uno script che suddivida solo ed esclusivamente la sezione che riguarda gli oggetti (rarità , equip , oggetti normali) altrimenti i menù già preimpostati vanno in conflitto con il bs laterale di charlie xkè spesso modificano anche la scena equip . Per quanto riguarda la 2° richiesta non ho trovato niente che cambi la grafica dell'arma durante la battaglia... tradotto al cambiare dell'arma equip cambia la grafica nella battaglia... come ho fatto presente nel messaggio precedente ho utilizzato l'esempio del bs laterale di ccoa xkè ha questa funziona .

http://img256.imageshack.us/img256/7639/ihateyou.gif

Un uomo senza religione è come un pesce senza bicicletta.

http://img18.imageshack.us/img18/3668/decasoft1.png

http://rpg2s.net/gif/SCContest1Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gif

Link to comment
Share on other sites

  • 0
In un menù che ho postato tempo fa c'era proprio la suddivisione degli oggetti in ogg-rarità non so se esista uno script ma per farlo non è difficile. Per esempio puoi crearti o un vettore o un Hashtable con gli id degli oggetti rari cosicchè in fase di visualizzazione nel menu puoi filtrarli escludendo o includendo solamente tali id. Non è molto difficile se hai problemi posso provare ad aiutarti.

"A tre settimane da oggi io mieterò il mio raccolto, immaginate dove vorrete essere perchè così sarà. Serrate i ranghi! Seguitemi! E se vi ritroverete soli a cavalcare su verdi praterie col sole sulla faccia non preoccupatevi troppo perchè sarete nei campi elisi e sarete già morti! Fratelli, ciò che facciamo in vita riecheggia nell'eternità!"

 

"C'era un sogno che era roma sarà realizzato. Questo era il desiderio di Marco Aurelio!"

Link to comment
Share on other sites

  • 0

Ecco la Scene_Item modificata e tutto ciò ke ti serve:

sostituisci la classe Window_Item con questa nuova (che si chiama con lo stesso nome come tutte):

 

class Window_Item < Window_Selectable
 attr_accessor :kind
 #--------------------------------------------------------------------------
 # ● Inizializzazione dell'oggetto
 #--------------------------------------------------------------------------
 def initialize(kind = 0)
super(0, 128, 640, 352)
@column_max = 2
refresh
self.index = 0
# Durante una finestra si muove al centro dello schermo e diventa
# translucente
if $game_temp.in_battle
  self.y = 64
  self.height = 256
  self.back_opacity = 160
end
@kind = kind
 end
 #--------------------------------------------------------------------------
 # ● Acquisizione di un oggetto
 #--------------------------------------------------------------------------
 def item
return @data[self.index]
 end
 #--------------------------------------------------------------------------
 # ● Aggiornamento
 #--------------------------------------------------------------------------
 def refresh
if self.contents != nil
  self.contents.dispose
  self.contents = nil
end
@data = []
# Aggiunta di un oggetto
case @kind 
when 0
  for i in 1...$data_items.size
	if $game_party.item_number(i) > 0
	  @data.push($data_items[i]) if (not Filter_Items::SPECIAL_ITEMS.include?(i))
	end
  end
# Vengono anche aggiunti un'arma e uno scudo se è possibile,
# eccetto durante una battaglia
when 1
  unless $game_temp.in_battle
	for i in 1...$data_weapons.size
	  if $game_party.weapon_number(i) > 0
		@data.push($data_weapons[i]) if (not Filter_Items::SPECIAL_WEAPONS.include?(i))
	  end
	end
	for i in 1...$data_armors.size
	  if $game_party.armor_number(i) > 0
		@data.push($data_armors[i]) if (not Filter_Items::SPECIAL_ARMORS.include?(i))
	  end
	end
  end

when 2
  for i in 1...$data_items.size
	if $game_party.item_number(i) > 0
	  @data.push($data_items[i]) if (Filter_Items::SPECIAL_ITEMS.include?(i))
	end
  end
# Vengono anche aggiunti un'arma e uno scudo se è possibile,
# eccetto durante una battaglia
  unless $game_temp.in_battle
	for i in 1...$data_weapons.size
	  if $game_party.weapon_number(i) > 0
		@data.push($data_weapons[i]) if (Filter_Items::SPECIAL_WEAPONS.include?(i))
	  end
	end
	for i in 1...$data_armors.size
	  if $game_party.armor_number(i) > 0
		@data.push($data_armors[i]) if (Filter_Items::SPECIAL_ARMORS.include?(i))
	  end
	end
  end
end
# Se il numero degli oggetti è 0, verrà creato un bitmap e tutti
# gli oggetti verranno disegnati
@item_max = @data.size
if @item_max > 0
  self.contents = Bitmap.new(width - 32, row_max * 32)
  for i in 0...@item_max
	draw_item(i)
  end
end
 end
 #--------------------------------------------------------------------------
 # ● Disegna un oggetto
 #	 index : Numero dell'oggetto
 #--------------------------------------------------------------------------
 def draw_item(index)
item = @data[index]
case item
when RPG::Item
  number = $game_party.item_number(item.id)
when RPG::Weapon
  number = $game_party.weapon_number(item.id)
when RPG::Armor
  number = $game_party.armor_number(item.id)
end
if item.is_a?(RPG::Item) and
   $game_party.item_can_use?(item.id)
  self.contents.font.color = normal_color
else
  self.contents.font.color = disabled_color
end
self.contents.font.name = "Arial"
self.contents.font.size = 24
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
 end
 #--------------------------------------------------------------------------
 # ● Aggiornamento del testo di aiuto
 #--------------------------------------------------------------------------
 def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
 end
end

 

 

Poi sostituisci Scene_Item con questa nuova:

 

class Scene_Item
 #--------------------------------------------------------------------------
 # ● メイン処理
 #--------------------------------------------------------------------------
 def main
# ヘルプウィンドウ、アイテムウィンドウを作成
@choise_window = Window_Choise.new
@help_window = Window_Help.new
@item_window = Window_Item.new
@choise_window.active = true
# ヘルプウィンドウを関連付け
@item_window.help_window = @help_window
# ターゲットウィンドウを作成 (不可視・非アクティブに設定)
@target_window = Window_Target.new
@target_window.visible = false
@target_window.active = false
# トランジション実行
Graphics.transition
# メインループ
loop do
  # ゲーム画面を更新
  Graphics.update
  # 入力情報を更新
  Input.update
  # フレーム更新
  update
  # 画面が切り替わったらループを中断
  if $scene != self
	break
  end
end
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@help_window.dispose
@item_window.dispose
@target_window.dispose
@choise_window.dispose
 end
 #--------------------------------------------------------------------------
 # ● フレーム更新
 #--------------------------------------------------------------------------
 def update
# ウィンドウを更新
if @choise_window.active == false
  @help_window.update
  @item_window.update
  @target_window.update
# ターゲットウィンドウがアクティブの場合: update_target を呼ぶ
if @item_window.active
	update_item
  return
end
if @target_window.active
  update_target
  return
end
else
  @choise_window.update
  update_choise
  update_help
end
# アイテムウィンドウがアクティブの場合: update_item を呼ぶ
 end
 
 def update_choise
if Input.trigger?(Input::B)
  $game_system.se_play($data_system.cancel_se)
  $scene = Scene_Menu.new(0)
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
  $game_system.se_play($data_system.decision_se)
  @choise_window.active = false
  @item_window.active = true
end
@item_window.kind = @choise_window.index
@item_window.refresh
 end
 #--------------------------------------------------------------------------
 # ● フレーム更新 (アイテムウィンドウがアクティブの場合)
 #--------------------------------------------------------------------------
 def update_item
# B ボタンが押された場合
if Input.trigger?(Input::B)
  # キャンセル SE を演奏
  $game_system.se_play($data_system.cancel_se)
  # メニュー画面に切り替え
  @choise_window.active = true
  @item_window.active = false
  return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
  # アイテムウィンドウで現在選択されているデータを取得
  @item = @item_window.item
  # 使用アイテムではない場合
  unless @item.is_a?(RPG::Item)
	# ブザー SE を演奏
	$game_system.se_play($data_system.buzzer_se)
	return
  end
  # 使用できない場合
  unless $game_party.item_can_use?(@item.id)
	# ブザー SE を演奏
	$game_system.se_play($data_system.buzzer_se)
	return
  end
  # 決定 SE を演奏
  $game_system.se_play($data_system.decision_se)
  # 効果範囲が味方の場合
  if @item.scope >= 3
	# ターゲットウィンドウをアクティブ化
	@item_window.active = false
	@target_window.x = (@item_window.index + 1) % 2 * 304
	@target_window.visible = true
	@target_window.active = true
	# 効果範囲 (単体/全体) に応じてカーソル位置を設定
	if @item.scope == 4 || @item.scope == 6
	  @target_window.index = -1
	else
	  @target_window.index = 0
	end
  # 効果範囲が味方以外の場合
  else
	# コモンイベント ID が有効の場合
	if @item.common_event_id > 0
	  # コモンイベント呼び出し予約
	  $game_temp.common_event_id = @item.common_event_id
	  # アイテムの使用時 SE を演奏
	  $game_system.se_play(@item.menu_se)
	  # 消耗品の場合
	  if @item.consumable
		# 使用したアイテムを 1 減らす
		$game_party.lose_item(@item.id, 1)
		# アイテムウィンドウの項目を再描画
		@item_window.draw_item(@item_window.index)
	  end
	  # マップ画面に切り替え
	  $scene = Scene_Map.new
	  return
	end
  end
  return
end
 end
 #--------------------------------------------------------------------------
 # ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
 #--------------------------------------------------------------------------
 def update_target
# B ボタンが押された場合
if Input.trigger?(Input::B)
  # キャンセル SE を演奏
  $game_system.se_play($data_system.cancel_se)
  # アイテム切れなどで使用できなくなった場合
  unless $game_party.item_can_use?(@item.id)
	# アイテムウィンドウの内容を再作成
	@item_window.refresh
  end
  # ターゲットウィンドウを消去
  @item_window.active = true
  @target_window.visible = false
  @target_window.active = false
  return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
  # アイテムを使い切った場合
  if $game_party.item_number(@item.id) == 0
	# ブザー SE を演奏
	$game_system.se_play($data_system.buzzer_se)
	return
  end
  # ターゲットが全体の場合
  if @target_window.index == -1
	# パーティ全体にアイテムの使用効果を適用
	used = false
	for i in $game_party.actors
	  used |= i.item_effect(@item)
	end
  end
  # ターゲットが単体の場合
  if @target_window.index >= 0
	# ターゲットのアクターにアイテムの使用効果を適用
	target = $game_party.actors[@target_window.index]
	used = target.item_effect(@item)
  end
  # アイテムを使った場合
  if used
	# アイテムの使用時 SE を演奏
	$game_system.se_play(@item.menu_se)
	# 消耗品の場合
	if @item.consumable
	  # 使用したアイテムを 1 減らす
	  $game_party.lose_item(@item.id, 1)
	  # アイテムウィンドウの項目を再描画
	  @item_window.draw_item(@item_window.index)
	end
	# ターゲットウィンドウの内容を再作成
	@target_window.refresh
	# 全滅の場合
	if $game_party.all_dead?
	  # ゲームオーバー画面に切り替え
	  $scene = Scene_Gameover.new
	  return
	end
	# コモンイベント ID が有効の場合
	if @item.common_event_id > 0
	  # コモンイベント呼び出し予約
	  $game_temp.common_event_id = @item.common_event_id
	  # マップ画面に切り替え
	  $scene = Scene_Map.new
	  return
	end
  end
  # アイテムを使わなかった場合
  unless used
	# ブザー SE を演奏
	$game_system.se_play($data_system.buzzer_se)
  end
  return
end
 end
 
 def update_help
text = ""
case @choise_window.index
when 0
  text = "Visualizze gli oggetti comuni."
when 1
  text = "Visualizza le armi e gli scudi."
when 2
  text = "Visualizza gli oggetti rari."
end
@help_window.set_text(text)
 end
end

 

 

Infine aggiungi prima di main questa classe e chiamala come vuoi:

 

module Filter_Items
 #SPECIAL_ITEM = [id1, id2...] id degli oggetti rari
 SPECIAL_ITEMS = [1]
 SPECIAL_WEAPONS = []
 SPECIAL_ARMORS = []
end
class Window_Choise < Window_Selectable
 def initialize
super(0, 64, 640, 64)
commands = ["Oggetti", "Armi", "Rarita'"]
@item_max = commands.size
@commands = commands
@column_max = 3
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.index = 0
 end
 #--------------------------------------------------------------------------
 # ● Aggiornamento
 #--------------------------------------------------------------------------
 def refresh
self.contents.clear
for i in 0...@item_max
  draw_item(i, normal_color)
end
 end
 #--------------------------------------------------------------------------
 # ● Disegna un oggetto
 #	 index : Numero dell'oggetto
 #	 color : Colore del personaggio
 #--------------------------------------------------------------------------
 def draw_item(index, color)
self.contents.font.color = color
self.contents.font.name = "Arial"
self.contents.font.size = 24
rect = Rect.new(4 + index*220, 0, self.contents.width - 8, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index])
 end
 #--------------------------------------------------------------------------
 # ● Cancellazione di un oggetto
 #	 index : Numero dell'oggetto
 #--------------------------------------------------------------------------
 def disable_item(index)
draw_item(index, disabled_color)
 end
end

 

 

Istruzioni:

Semplicemente troverai nell'ultima classe ke hai inserito all'inizio 3 array all'interno del modulo Filter_Items li inserisci gli id degli oggetti, armi o armature kefanno parte degli oggetti speciali e il gioco è fatto.

 

Per qualsiasi problema o domanda sai dove trovarmi.

"A tre settimane da oggi io mieterò il mio raccolto, immaginate dove vorrete essere perchè così sarà. Serrate i ranghi! Seguitemi! E se vi ritroverete soli a cavalcare su verdi praterie col sole sulla faccia non preoccupatevi troppo perchè sarete nei campi elisi e sarete già morti! Fratelli, ciò che facciamo in vita riecheggia nell'eternità!"

 

"C'era un sogno che era roma sarà realizzato. Questo era il desiderio di Marco Aurelio!"

Link to comment
Share on other sites

  • 0
mi da un errore xkè anche il bs laterale di charlie modifica la scene item adesso sto provando a modificarlo poi nel caso non ci riesco di mando un pm ;) grazie

http://img256.imageshack.us/img256/7639/ihateyou.gif

Un uomo senza religione è come un pesce senza bicicletta.

http://img18.imageshack.us/img18/3668/decasoft1.png

http://rpg2s.net/gif/SCContest1Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gif

Link to comment
Share on other sites

  • 0
Magari prima di fare modifiche vedi se i piace in un progetto nuovo e poi al massimo modifichi. Cmq per funzionare funziona quindi in teoria non dovresti avere problemi...

"A tre settimane da oggi io mieterò il mio raccolto, immaginate dove vorrete essere perchè così sarà. Serrate i ranghi! Seguitemi! E se vi ritroverete soli a cavalcare su verdi praterie col sole sulla faccia non preoccupatevi troppo perchè sarete nei campi elisi e sarete già morti! Fratelli, ciò che facciamo in vita riecheggia nell'eternità!"

 

"C'era un sogno che era roma sarà realizzato. Questo era il desiderio di Marco Aurelio!"

Link to comment
Share on other sites

  • 0

funzionare funziona e che durante la battaglia non posso usare oggetti ;) si cmq è perfetto. ho trovato un altro script (di tio) in un altro forum e anche quello mi da un altro problema molto particolare cioè se metto un oggetto nella classe rarità e questo item chiama un evento comune mi mette quell'oggetto anche in normal item 0_o . poi non potevi usare oggetti dalle rarità ma quel problema con un pò di copia incolla sono riuscito a sistemarlo

guarda se hai voglia e tempo ti scarichi il Bs la terale di charliee e provi a mettere lo script direttamente all'interno di quello xkè so dovè il problema ma non riesco a risolverlo

ciauu

http://img256.imageshack.us/img256/7639/ihateyou.gif

Un uomo senza religione è come un pesce senza bicicletta.

http://img18.imageshack.us/img18/3668/decasoft1.png

http://rpg2s.net/gif/SCContest1Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gif

Link to comment
Share on other sites

  • 0

Scusate se riesumo XD son veramente spiacente U.U però devo ringraziare per il Module... il Filter_Item di questo script, perchè m'ha salvato la vita :D

 

(Apparte questo... è un bene riesumare, perchè girano tantissimi script per la suddivisione in categorie degli oggetti... ma fan tutti cagare : | perchè sono script lunghissimi, che fanno funzioni semplicissime... questo invece è semplice, corto... e funziona U.U un po macchinoso visto che devi impostare gli oggetti speciali tramite script, e non con gli attributi come altri, però è una piccola riga XD che sta bene ovunque :D)

 

 

Membro # 8-8-8 [Hachi] della:

http://img3.imageshack.us/img3/9636/bannergm.png

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...