Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =begin
- ======================================================
- SS Add-On: Total Item Limit v1.00
- by Adiktuzmiko
- Date Created: 09/27/2014
- Date Last Updated: 09/27/2014
- Requires: Shared Storage v2.10
- Difficulty: Easy
- ======================================================
- Overview
- ======================================================
- Allows the shared storages to have a limit based
- on total items inside of it
- ======================================================
- Usage
- ======================================================
- Put this script into your scripts editor and modify
- the settings below
- To make a storage use this limit script, on the ITEM_MAX_NUMBER
- of that storage, put "SceneManager.scene.get_item_limit"
- Example: If you want storage 1 to use this:
- ITEM_MAX_NUMBER[1] = "SceneManager.scene.get_item_limit"
- if you want the remaining slots to show on the custom window:
- CUSTOM_WINDOW[index] = "SceneManager.scene.get_remaining_slots"
- Example: If you want storage 1 to use this:
- CUSTOM_WINDOW[1] = "SceneManager.scene.get_remaining_slots"
- The 0 indexed setting will be the one used by default
- by any storage that you open that doesn't have it's own
- settings defined. So don't remove it.
- Copy paste the setting constants and modify the index to the
- storage number that you want, then modify the values
- For example:
- This would be the limit for storage 1
- ITEM_TOTAL_LIMIT[1] = 10
- Do that for every setting that you want to change
- for a particular storage
- ======================================================
- Compatibility
- ======================================================
- Overwrites the Shared Stash's can_store and Process
- Digits methods
- ======================================================
- Terms and Conditions
- ======================================================
- View it here: http://lescripts.wordpress.com/terms-and-conditions/
- ======================================================
- =end
- module ADIK
- module SHARED_STORAGE
- #Important: Do not remove!
- #======================================================
- ITEM_TOTAL_LIMIT = []
- #======================================================
- ITEM_TOTAL_LIMIT[0] = "1"
- end
- end
- class Scene_SharedStorage
- def get_remaining_slots
- total = 0
- $shared_storage.each_key do |key|
- if key[0] == @storage_number
- total += $shared_storage[key]
- end
- end
- limit = ADIK::SHARED_STORAGE::ITEM_TOTAL_LIMIT[@storage_number]
- limit = ADIK::SHARED_STORAGE::ITEM_TOTAL_LIMIT[0] if limit.nil?
- return eval(limit) - total
- end
- def get_item_limit
- item = get_item
- begin
- return $shared_storage[[@storage_number,item.class.to_s,item.id]] + get_remaining_slots
- rescue
- return get_remaining_slots
- end
- end
- def get_item_limit_ex(item)
- begin
- return $shared_storage[[@storage_number,item.class.to_s,item.id]] + get_remaining_slots
- rescue
- return get_remaining_slots
- end
- end
- #Overwrites the original
- def can_store(item)
- if @ss_category == :deposit
- numb = ADIK::SHARED_STORAGE::MAX_ITEM_NUMBER[@storage_number]
- numb = ADIK::SHARED_STORAGE::MAX_ITEM_NUMBER[0] if numb.nil?
- if numb == "SceneManager.scene.get_item_limit"
- numb = get_item_limit_ex(item)
- else
- numb = eval(numb)
- end
- begin
- numb -= $shared_storage[[@storage_number,item.class.to_s,item.id]]
- rescue
- end
- return numb > 0
- else
- numb = $game_party.item_number(item)
- return numb < $game_party.max_item_number(item)
- end
- end
- end
- class Window_NumberInput_SS
- #Overwrites the original
- def process_digit_change
- return unless active
- if Input.repeat?(:UP) || Input.repeat?(:DOWN)
- Sound.play_cursor
- place = 10 ** (@digits_max - 1 - @index)
- n = @number / place % 10
- @number -= n * place
- n = (n + 1) % 10 if Input.repeat?(:UP)
- n = (n + 9) % 10 if Input.repeat?(:DOWN)
- @number += n * place
- if @category == :deposit
- item = @item
- numb = ADIK::SHARED_STORAGE::MAX_ITEM_NUMBER[$shared_storage_number]
- numb = ADIK::SHARED_STORAGE::MAX_ITEM_NUMBER[0] if numb.nil?
- if numb == "SceneManager.scene.get_item_limit"
- numb = SceneManager.scene.get_item_limit_ex(item)
- else
- numb = eval(numb)
- end
- begin
- numb -= $shared_storage[[$shared_storage_number,@item.class.to_s,@item.id]]
- rescue
- end
- @number = [@number,$game_party.item_number(@item),numb].min
- else
- amount = $shared_storage[[$shared_storage_number,@item.class.to_s,@item.id]]
- limit = $game_party.max_item_number(@item)- $game_party.item_number(@item)
- @number = [@number,amount,limit].min
- end
- refresh
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement