SG Item Found Window [Resolved]

Started by goloc, May 26, 2009, 04:50:34 pm

Previous topic - Next topic

goloc

May 26, 2009, 04:50:34 pm Last Edit: May 27, 2009, 07:51:40 pm by goloc
Hi i have Sandgolem's item found window, except now his site is down and I am having trouble with it. I can only show that you found one item at a time. I am not a scripter so i do not know what to make of the problem. please help!!!

Here is the script.. I repeat it is I got it of sandgolem at gamebaker.com and take no credit for it whatsoever

Spoiler: ShowHide
#==========================================================================
# ** SG Item Found Window
#==========================================================================
# sandgolem
# Version 1.6
# 14.05.07
#Modifed @ Hanmac
#==========================================================================

SG_FindWord_Default = 'Found:'
SG_NoFind_Default = 'nothing'
SG_Get_Item_Default = true
SG_gold_icon = '032-Item01'
SG_FindWin_CenterY = 120
SG_FindWin_Opacity = 160
SG_Max_items = 0#3

# Instruct: http://www.gamebaker.com/rmxp/scripts/item-found-window.htm
=begin
#==========================================================================

Versionslog
v1.6
Heldstatus hinzugef?gt

v1.5
variable hinzugef?gt
Titel kann ausgeblendet werden

v1.4
Gold hinzugef?gt

v1.3
"nichts" hinzuf?gt

v1.2
Zusatzfunktionen

v1.1
Anzahl und Item hinzuf?gen.

v1.0
Oginal von sandgolem

#========================
To-Do-List:
anzeige Status-erh?hung

#==========================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# but under the default scripts and the SDK if you're using it.
#
# Have problems? Official topic:
#   http://forums.gamebaker.com/showthread.php?t=141
#
#==========================================================================
=end
begin
 SDK.log('SG Item Found Window', 'sandgolem', 1.6, '07.05.07')
 if SDK.state('SG Item Found Window') != true
   @sg_itemfound_disabled = true
 end
 rescue
end

if !@sg_itemfound_disabled
#--------------------------------------------------------------------------

class Game_System
 attr_accessor :sg_found_word
 attr_accessor :sg_get_item
 attr_accessor :sg_no_find
end
#--------------------------------------------------------------------------
class Scene_Map
 attr_accessor :sg_find_window
 attr_accessor :sg_find_window_titel
 alias sg_findwindow_scenemap_update update
 def update
   if @sg_find_window != nil
     sg_findwindow_update
   else
     sg_findwindow_scenemap_update
   end
 end

 def sg_findwindow_update
   $game_map.update
   $game_system.update
   $game_screen.update
   @spriteset.update
   @message_window.update
   @sg_find_window.wait -= 1
   if @sg_find_window.wait == 1 or Input.trigger?(Input::C) or Input.trigger?(Input::B)
     #$game_player.disable_player_movement = false
     #$game_player.disable_player_trigger  = false  
     @sg_find_window.dispose
     @sg_find_window = nil
     @sg_find_window_titel.dispose
     @sg_find_window_titel = nil
     for i in 0..2
       $sg_found[i] = []
       $sg_found_number[i] = []
       $sg_found_name[i] = []
     end
     $sg_found_gold = nil
     if @window_sprites != nil
       @window_sprites.each { |sprite| sprite.dispose if sprite.is_a?(Sprite_AnimatedIcon) }
     end
   end
 end
end
#--------------------------------------------------------------------------
class Interpreter
 def sg_find_window(wait = 100)
   if $scene.is_a?(Scene_Map)
     size = 0
     for i in 0..2
       if $sg_found[i] == nil
         $sg_found[i] = []
       end
       size += $sg_found[i].size
     end
     if $sg_found_gold != nil or  size == 0
       size += 1
     end
     if  SG_Max_items != nil && SG_Max_items != 0
       max_items =  SG_Max_items
     else
       max_items = 1
     end
     if  max_items >= size
       max_items = size
     end
     #$game_player.disable_player_movement = true
     #$game_player.disable_player_trigger  = true
     $scene.sg_find_window = Window_SGFound.new(max_items,size)
     $scene.sg_find_window_titel = Window_SGFound_Titel.new(max_items)
     $scene.sg_find_window.wait = wait
   end
 end
 #--------------------------------------------
 #Standard ?nderung
 #--------------------------------------------
 def sg_find_word(word = SG_FindWord_Default)
   $game_system.sg_found_word = word
 end
 #----------------------
 def sg_get_item(bool = SG_Get_Item_Default)
   $game_system.sg_get_item = bool
 end
 #----------------------
 def sg_no_find(word = SG_NoFind_Default)
   $game_system.sg_no_find = word
 end
 #----------------------
  def get_item(item_typ,item,n=1)
    case item_typ
    when 0
     $game_party.gain_item(item, n)
    when 1
     $game_party.gain_weapon(item, n)
    when 2
     $game_party.gain_armor(item, n)
   end
 end
 #----------------------
 def sg_get_hero(id,n=1,held_id=nil)
    if held_id==nil
      for i in 0..$game_party.actors.size-1
       case id
       when 0
         $game_party.actors[i].maxhp += n
       when 1
         $game_party.actors[i].maxsp += n
       when 2
         $game_party.actors[i].exp += n
       when 3
         $game_party.actors[i].str += n
       when 4
         $game_party.actors[i].dex += n
       when 5
         $game_party.actors[i].agi += n
       when 6
         $game_party.actors[i].int += n
       end
     end
     else
       case id
       when 0
         $game_party.actors[held_id].maxhp += n
       when 1
         $game_party.actors[held_id].maxsp += n
       when 2
         $game_party.actors[held_id].exp += n
       when 3
         $game_party.actors[held_id].str += n
       when 4
         $game_party.actors[held_id].dex += n
       when 5
         $game_party.actors[held_id].agi += n
       when 6
         $game_party.actors[held_id].int += n
       end
     end
   end
#--------------------------------------------
# Var-Find
#--------------------------------------------
 def sg_find_var(id,n=1,name=nil)
   if $sg_found == nil
     $sg_found = []
     $sg_found_name = []
     $sg_found_number = []
   end
   if $sg_found[2]== nil
     $sg_found[2] = []
     $sg_found_nummer[2] = []
     $sg_found_name[2] = []
   end
   $sg_found[2] += [id]
   $sg_found_nummer[2] += [n]
   if name != nil
     $sg_found_name[2] += [name]
   else
     $sg_found_name[2] += [$data_system.variables[id]]
   end  
   if $game_system.sg_get_item != nil
     if $game_system.sg_get_item
       $game_variables[id] += n
     end
   else
     if SG_Get_Item_Default
       $game_variables[id] += n
     end
   end
 end
#--------------------------------------------
# Gold-Find
#--------------------------------------------
 def sg_find_gold(gold)
   if $sg_found_gold == nil
     $sg_found_gold = 0
   end
   $sg_found_gold+=gold
   if $game_system.sg_get_item != nil
     if $game_system.sg_get_item
       $game_party.gain_gold(gold)
     end
   else
     if SG_Get_Item_Default
       $game_party.gain_gold(gold)
     end
   end
 end
#--------------------------------------------
# Held-Find
#--------------------------------------------
 def sg_find_hero(id,var=1,held_id=nil,name=nil)
   if $sg_found == nil
     $sg_found = []
     $sg_found_name = []
     $sg_found_number = []
   end
   if $sg_found[2] == nil
     $sg_found[2] = []
     $sg_found_nummer[2] = []
     $sg_found_name[2] = []
   end
   $sg_found_nummer[2] += [var]
   $sg_found[2] += [held_id]
   if name != nil
     $sg_found_name[2] += [name]
   else
     case id
     when 0
       $sg_found_name[2] += [$data_system.words.hp]
     when 1
       $sg_found_name[2] += [$data_system.words.sp]
     when 2
       $sg_found_name[2] += ["EXP"]
     when 3
       $sg_found_name[2] += [$data_system.words.str]
     when 4
       $sg_found_name[2] += [$data_system.words.dex]
     when 5
       $sg_found_name[2] += [$data_system.words.agi]
     when 6
       $sg_found_name[2] += [$data_system.words.int]
     end
   end
   if $game_system.sg_get_item != nil
     if $game_system.sg_get_item
       sg_get_hero(id,var,held_id)
     end
   else
     if SG_Get_Item_Default
       sg_get_hero(id,var,held_id)
     end
   end
 end
 #---------------------------------
 def sg_find(item_typ,item,n=1,name = nil)
   if $sg_found == nil
     $sg_found = []
     $sg_found_name = []
     $sg_found_number = []
   end    
   if $sg_found[0] == nil
     $sg_found[0] = []
     $sg_found_name[0] = []
     $sg_found_number[0] = []
   end  
    case item_typ
    when 0
     $sg_found[0] += [$data_items[item]]
     if name == nil
       $sg_found_name[0] += [$data_items[item].name]
     end
   when 1
     $sg_found[0] += [$data_weapons[item]]
     if name == nil
       $sg_found_name[0] += [$data_weapons[item].name]
     end
   when 2
     $sg_found[0] += [$data_armors[item]]
     if name == nil
       $sg_found_name[0] += [$data_armors[item].name]
     end
   end  
   if name != nil
     $sg_found_name[0] += [name]
   end
   $sg_found_number[0] += [n]
   if $game_system.sg_get_item != nil
     if $game_system.sg_get_item
     get_item(item_typ,item,n)
   end
 else
   get_item(item_typ,item,n)
 end
end
#--------------------------------------------
# Spezifische Find
#--------------------------------------------
 def sg_find_item(item,n=1,name = nil)
   sg_find(0,item,n,name)
 end
#-------------------
 def sg_find_weapon(item,n=1,name = nil)
   sg_find(1,item,n,name)
 end
#-------------------
 def sg_find_armor(item,n=1,name = nil)
   sg_find(2,item,n,name)
 end
#-------------------
end
#--------------------------------------------
# Find Window
#--------------------------------------------
#-----------------
# Title window
#-----------------
class Window_SGFound_Titel < Window_Base
 def initialize(max_items)
   super(180, SG_FindWin_CenterY - max_items*16, 280, max_items*32+64)
   self.contents = Bitmap.new(width - 32, 32)
   self.opacity = SG_FindWin_Opacity
   refresh
 end
#-----------------
 def refresh
   if $game_system.sg_found_word != nil
     if $game_system.sg_found_word != ''
       self.contents.draw_text(0,0,self.width,32,$game_system.sg_found_word)
     end
   else
     self.contents.draw_text(0,0,self.width,32,SG_FindWord_Default)
   end
 end
end
#-----------------
class Window_SGFound < Window_Base
 attr_accessor :wait
#-----------------
 def initialize(max_items,size)
   @size=size
   super(180, SG_FindWin_CenterY - max_items*16+32, 280, max_items*32+32)
   @size = 1 if @size == 0
   self.contents = Bitmap.new(width - 32, @size*32)
   self.opacity = 0
   refresh
 end
#-----------------
 def refresh
    if SDK.enabled?('Animated Icons')
     @window_sprites.each { |sprite| sprite.dispose if sprite.is_a?(Sprite_AnimatedIcon) }
   end
   y = 0
#-----------------
# no window
#-----------------
   if $sg_found_gold == nil and @size == 0
     if $game_system.sg_no_find != nil
       self.contents.draw_text(0,y,self.width,32,$game_system.sg_no_find)
     else
       self.contents.draw_text(0,y,self.width,32,SG_NoFind_Default)
     end
   end
#-----------------
# Gold window
#-----------------
   if $sg_found_gold != nil
     if SDK.enabled?('Animated Icons')
       sprite = Sprite_AnimatedIcon.new(0,y+4, SG_gold_icon, self)
       @window_sprites << sprite
     else
       bitmap = RPG::Cache.icon(SG_gold_icon)
       self.contents.blt(0,y+4,bitmap,Rect.new(0,0,24,24))
     end
     self.contents.draw_text(28,y,self.width,32,$data_system.words.gold)
     self.contents.draw_text(28,y,self.width,32,$sg_found_gold,2)
     y += 32
   end
#-----------------
# window
#-----------------
   for j in 0...$sg_found.size
     for i in 0...$sg_found[j].size
       case j
       when 2
          if $sg_found[2][i] != nil
            self.contents.draw_text(28,y,self.width,32,"#{$sg_found_name[j][i]}(#{$game_party.actors[$sg_found[j][i]].name})")      
          else
            self.contents.draw_text(28,y,self.width,32,"#{$sg_found_name[j][i]}(Alle)")
          end
       when 0
         if SDK.enabled?('Animated Icons')
           sprite = Sprite_AnimatedIcon.new(0,y+4, $sg_found[0][i].icon_name, self)
           @window_sprites << sprite
         else
           bitmap = RPG::Cache.icon($sg_found[0][i].icon_name)
           self.contents.blt(0,y+4,bitmap,Rect.new(0,0,24,24))
         end
       end
       self.contents.draw_text(28,y,self.width,32,$sg_found_name[j][i]) if j <2
       self.contents.draw_text(28,y,self.width-64,32,$sg_found_number[j][i].to_s,2)
       y += 32  
     end
   end  
 end
#-------------------
#taste
#-------------------
 def update
   if Input.press?(Input::UP)
     self.oy -= 4 if self.oy > 0
   elsif Input.press?(Input::DOWN)
     self.oy += 4 if self.oy < self.contents.height - (self.height - 32)
   end
 end
end
#--------------------------------------------------------------------------
end


ps. it works with SDK

Punn

Do something like this


sg_find_item(29,'3 Green Herbs')
sg_find_item(78,'2 Tonics')
sg_find_window


You can just easily make it show more item, but you need to add the item yourself

goloc

I had exactly that format and any way I put it is says

Script 'Game_Party' line 179 TypeError occured
String cannot be coerced into Fixnum

I dont know what this means since I do not know how script.


Blizzard

Why don't you use events? That script seems pretty unecessary to me.
Check out our game brands:

Daygames
Game Night Games
Chugnar Games

Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

goloc

How would I show a find window with and icon using events?

Blizzard

Using an advanced message system, how else? :facepalm:
Check out our game brands:

Daygames
Game Night Games
Chugnar Games

Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

goloc

Thanks for all your help .... I found I had and earlier version of sandgolems script that works fine for some reason.... and I may try blizzards suggestion to see if it is easier.

Blizzard

Alright then. The message system will give you more freedom and allow more advanced stuff.

Please edit your first post and add [RESOLVED] before the topic title. :)
Check out our game brands:

Daygames
Game Night Games
Chugnar Games

Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Punn

You have a "updated" (/end sarcasm) version of it, I used the 1st one and it seems to work for me, you should try this one instead

Spoiler: ShowHide
#==========================================================================
# ** SG Item Found Window
#==========================================================================
# sandgolem
# Version 1
# 30.06.06
#==========================================================================

SG_FindWord_Default = 'Obtain:'
SG_FindWin_CenterY = 120
SG_FindWin_Opacity = 160

# Instruct: http://www.gamebaker.com/rmxp/scripts/item-found-window.htm

#==========================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# but under the default scripts and the SDK if you're using it.
#
# Have problems? Official topic:
#   http://forums.gamebaker.com/showthread.php?t=141
#
=begin
sg_find_armor
sg_find_item
sg_find_weapon

sg_find_item(29,'3 Green Herbs')
sg_find_item(78,'2 Tonics')
sg_find_window
=end
#==========================================================================

begin
  SDK.log('SG Item Found Window', 'sandgolem', 1, '30.06.06')
  if SDK.state('SG Item Found Window') != true
    @sg_itemfound_disabled = true
  end
  rescue
end

if !@sg_itemfound_disabled
#--------------------------------------------------------------------------

class Game_System
  attr_accessor :sg_found_word
end

class Scene_Map
  attr_accessor :sg_find_window
 
  alias sg_findwindow_scenemap_update update
  def update
    if @sg_find_window != nil
      sg_findwindow_update
    else
      sg_findwindow_scenemap_update
    end
  end
 
  def sg_findwindow_update
    $game_map.update
    $game_system.update
    $game_screen.update
    @spriteset.update
    @message_window.update
    @sg_find_window.wait -= 1
    if @sg_find_window.wait < 1 or Input.trigger?(Input::C) or
    Input.trigger?(Input::B)
      @sg_find_window.dispose
      @sg_find_window = nil
      $sg_found_items = []
      $sg_found_name = []
    end
  end
end

class Interpreter
  def sg_find_window(wait = 100)
    if $scene.is_a?(Scene_Map)
      if $sg_found_items != nil && $sg_found_items.size > 0
        $scene.sg_find_window = Window_SGFound.new
        $scene.sg_find_window.wait = wait
      end
    end
    @wait_count += 1
  end

  def sg_find_word(word = SG_FindWord_Default)
    $game_system.sg_found_word = word
  end

  def sg_find_armor(item,name = nil)
    if $sg_found_items == nil
      $sg_found_items = []
      $sg_found_name = []
    end
    $sg_found_items += [$data_armors[item]]
    if name == nil
      $sg_found_name += [$data_armors[item].name]
    else
      $sg_found_name += [name]
    end
  end

  def sg_find_item(item,name = nil)
    if $sg_found_items == nil
      $sg_found_items = []
      $sg_found_name = []
    end
    $sg_found_items += [$data_items[item]]
    if name == nil
      $sg_found_name += [$data_items[item].name]
    else
      $sg_found_name += [name]
    end
  end

  def sg_find_weapon(item,name = nil)
    if $sg_found_items == nil
      $sg_found_items = []
      $sg_found_name = []
    end
    $sg_found_items += [$data_weapons[item]]
    if name == nil
      $sg_found_name += [$data_weapons[item].name]
    else
      $sg_found_name += [name]
    end
  end
end

class Window_SGFound < Window_Base
  attr_accessor :wait
 
  def initialize
    size = 64 + 32 * $sg_found_items.size
    super(180, SG_FindWin_CenterY - size / 2, 280, size)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = SG_FindWin_Opacity
    refresh
  end
 
  def refresh
    if $game_system.sg_found_word != nil
      self.contents.draw_text(0,0,self.width,32,$game_system.sg_found_word)
    else
      self.contents.draw_text(0,0,self.width,32,SG_FindWord_Default)
    end
    y = 32
    for i in 0...$sg_found_items.size
      if $sg_found_items[i].name == $sg_found_name[i]
        draw_item_name($sg_found_items[i],0,y)
      else
        bitmap = RPG::Cache.icon($sg_found_items[i].icon_name)
        self.contents.blt(0,y+4,bitmap,Rect.new(0,0,24,24))
        self.contents.draw_text(28,y,self.width,32,$sg_found_name[i])
      end
      y += 32
    end
  end
end

#--------------------------------------------------------------------------
end


If this doesnt work then sorry.