Pomógł: 1 raz Dołączył: 20 Sie 2012 Posty: 51 Skąd: Włocławek
Wysłany: Sro 29 Sie, 2012 05:37
Waga przedmiotów!
~ XaiL System - Inventory Weight ~
Krótki opis:
Skrypt dodaje wagę dla każdego z naszych przedmiotów, jest dosyć łatwy w obsłudze i bardzo ładnie wygląda
Autor:
Nicke
Tłumaczenie:
Saskio
Kompatybilność:
RPG Maker VX Ace
Skrypt:
Spoiler:
Kod:
#==============================================================================
# XaiL System - Inventory Weight
# Author: Nicke
# Stworzony: 02/05/2012
# Edytowany: 12/05/2012
# Tłumaczenie: Saskio
# Specjalnie dla Ultimateam.pl
# Wersja: 1.0b
#==============================================================================
# Instrukcja
# -----------------------------------------------------------------------------
# Aby zainstalować ten skrypt, należy otworzyć Edytor Skryptów i wkleić
# go w wolny slot poniżej 'Materials' ale nad 'Main'. Pamiętaj o zapisie!
#
# Ten skrypt umożliwia ustawienie wagi przedmiotów.
# Maksymalna waga ekwipunku wrasta wraz ze zdobyciem poziomu.
# Zobacz szczegóły i ustaw je, według własnych potrzeb!
#
# Domyślna waga przedmiotu to 0.0 jednak możesz to zmienić, wpisując w komentarz danej rzeczy:
# <WEIGHT|weight: numer>
#
# Przykłady:
# <weight: 15.5>
# <WEIGHT: 4.5>
#
# Maksymalny udźwig na początku wynosi 0.0. Aby odświeżyć udźwig należy wywołać skrypt:
# $game_party.refresh_weight
#
# Dużym minusem jest to, że musimy manualnie powiększyć obciążenie.
# Aby dodać/usunąć wagę przedmiotu musisz wywołać następujący skrypt:
# $game_party.weight_item(ID, ilość = 1, typ = :item, weight_type = :gain)
#
# Examples:
# $game_party.weight_item(1) # // Dodaje wagę jednego przedmiotu z ID_1
# $game_party.weight_item(1, 2, :weapon) # // Dodaje wagę 2 broni z ID_1
# $game_party.weight_item(1, 1, :armor, :lose) # // Usuwa wagę jednego pancerza z ID_1
#
# *** Jedynie na RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-INVENTORY-WEIGHT"] = true
module XAIL
module INV_WEIGHT
#--------------------------------------------------------------------------#
# * Ustawienia
#--------------------------------------------------------------------------#
# Czy masa zwiększa się, jeśli stackujesz przedmioty?
# i.e jeśli masz 2 lub więcej itemów [???]
# STACK_WEIGHT = true/false
STACK_WEIGHT = true
# Max MAX_WEIGHT_TYPE = :symbol
# :default = Maksymalny udźwig bazowany na poziomie.
# :str = Maksymalny udźwig bazowany na ataku.
# :custom = Maksymalny udźwig bazowany na własnej opcji
MAX_WEIGHT_TYPE = :default
# Formuła na maksymalny udźwig bazowany na poziomie.
def self.weight_level
case $game_party.leader.level
when 1..10 ; weight = 20.0
when 11..19 ; weight = 40.0
when 20..30 ; weight = 60.0
when 31..40 ; weight = 80.0
when 41..50 ; weight = 99.0
end
return weight
end
# Inna formuła. Obecnie bazuje na ataku i zręczności bohatera podzielonych
# przez 2
# Wybierz tu, co chcesz.
def self.weight_custom
$game_party.leader.atk.to_f + $game_party.leader.agi.to_f / 2.0
end
# Włącz tą opcję, jeśli chcesz aby postać mogła być obciążona.
# Na przykład: Kiedy jest 50% obciążenia bohater będzie biegał wolniej,
# dopóki nie sprzeda/wyrzuci kilku itemów.
# Kiedy jest 90% obciążenia wojowniczość nie jest zbyt świetna.
# USE_ENCUMBER = true/false
USE_ENCUMBER = true
# Ta opcja decyduje o szybkości biegu, jeśli USE_ENCUMBER jest 'true'
# Objaśnienie:
# Kiedy bohater ma 50% obciążenia prędkość poruszania się to 3.8.
# Kiedy bohater ma 75% obciążenia prędkość poruszania się to 3.4.
# Kiedy bohater ma 90% obciążenia prędkość poruszania się to 3.2.
# Kiedy bohater ma 95% obciążenia prędkość poruszania się to 3.0
# Poniżej 50% obciążenia- prędkość biegu domyślna
def self.encumber_speed(weight, max, default)
$game_player.move_speed = 3.8 if weight >= max * 0.50
$game_player.move_speed = 3.4 if weight >= max * 0.75
$game_player.move_speed = 3.2 if weight >= max * 0.90
$game_player.move_speed = 3.0 if weight >= max * 0.95
$game_player.move_speed = default if weight <= max * 0.50
end
end
end
# *** Nie edytuj poniżej, chyba, że wiesz co robisz. ***
#==============================================================================#
# ** RPG::BaseItem
#==============================================================================#
class RPG::BaseItem
def weight
# // Method to set a item weight.
@note.scan(/<(?:WEIGHT|weight):\s(\d+.\d+)>/i)
return ($1.to_f > 0.0 ? $1.to_f : 0.0)
end
end
#==============================================================================#
# ** Game_Party
#==============================================================================#
class Game_Party < Game_Unit
attr_reader :weight
attr_reader :max_weight
alias xail_item_weight_sys_init initialize
def initialize(*args, &block)
# // Method to initialize.
xail_item_weight_sys_init(*args, &block)
@weight = 0.0
@max_weight = 0.0
end
def refresh_weight
# // Method to refresh the max weight.
@max_weight = max_weight? unless leader.nil?
end
def max_weight?
# // Method to check the max weight.
case XAIL::INV_WEIGHT::MAX_WEIGHT_TYPE
when :default ; return @max_weight = XAIL::INV_WEIGHT.weight_level
when :str ; return @max_weight = leader.atk.to_f
when :custom ; return @max_weight = XAIL::INV_WEIGHT.weight_custom
end
end
def weight_item(item, amount = 1, type = :item, weight_type = :gain)
# // Method to gain an item with weight.
case type
when :item ; type = $data_items
when :weapon ; type = $data_weapons
when :armor ; type = $data_armors
end
item = type[item]
case weight_type
when :gain
# // Gain: Increase the current weight.
unless item.nil?
unless XAIL::INV_WEIGHT::STACK_WEIGHT
unless has_item?(type[item.id])
@weight += item.weight
end
else
@weight += item.weight
end
if @weight > max_weight?
return @weight -= item.weight
end
gain_item(item, amount, false)
end
when :lose
# // Lose: Decrease the current weight.
return unless has_item?(type[item.id])
unless item.nil?
unless XAIL::INV_WEIGHT::STACK_WEIGHT
unless has_item?(type[item.id])
@weight -= item.weight unless @weight <= 0.0
end
if item_number(item) < 2
@weight -= item.weight unless @weight <= 0.0
end
else
@weight -= item.weight unless @weight <= 0.0
end
gain_item(item, -amount, false)
end
end
end
end
#==============================================================================#
# ** Game_Player
#==============================================================================#
class Game_Player < Game_Character
attr_accessor :move_speed
alias xail_item_weight_game_player_init initialize
def initialize
# // Method to initialize game player.
@weight = $game_party.weight
@max_weight = $game_party.max_weight
xail_item_weight_game_player_init
@default_move_speed = @move_speed.to_f
end
alias xail_item_weight_game_player_dash? dash?
def dash?
# // Method to check if player can dash.
return false if $game_party.weight >= $game_party.max_weight * 0.90 if XAIL::INV_WEIGHT::USE_ENCUMBER
xail_item_weight_game_player_dash?
end
alias xail_item_weight_game_player_update update
def update
# // Method to refresh game player.
if XAIL::INV_WEIGHT::USE_ENCUMBER
if @weight != $game_party.weight
@weight = $game_party.weight
@max_weight = $game_party.max_weight
XAIL::INV_WEIGHT.encumber_speed(@weight, @max_weight, @default_move_speed)
end
end
xail_item_weight_game_player_update
end
end
#==============================================================================#
# ** Game_Interpreter
#==============================================================================#
class Game_Interpreter
def w_item(item, amount = 1, type = :item, weight_type = :gain)
# // Quick method to add/remove an item with weight.
$game_party.weight_item(item, amount, type, weight_type)
end
end # END OF FILE
#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#
Screeny:
Spoiler:
Dodatkowe informacje: Instrukcja:
1.Wklej skrypt nad 'Main' w edytorze skryptów.
2.Dalsza instrukcja znajduje się w treści skryptu!
Skrypt nie potrzebuje żadnych dodatkowych grafik!
Ważne:
Skrypt nie działa bez XaiL System - Icon Menu
Link: http://www.ultimateam.pl/...p?p=82433#82433 Jeszcze Ważniejsze:
W skrypcie jest mały błąd, mianowicie w hudzie nie mieści się więcej niż 5 cyferek (5.5 / 20), niestety kiedy jest więcej to przycina numerek Czy ktoś mógłby edytować ten skrypt i wydłużyć hud???
________________________ Praca uszlachetnia, lenistwo uszczęśliwia.
Pomógł: 6 razy Dołączył: 07 Mar 2010 Posty: 261 Skąd: Gliwice
Wysłany: Czw 27 Gru, 2012 17:19
Dłuższy czas temu myślałem "kurde, fajnie by było, gdybym mógł ustalić maksymalną wagę jaką może udźwignąć bohater. Nie nosiłby wtedy 20 toporów niepotrzebnie." Dzisiaj zakupiłem VX Ace i to będzie mój podstawowy skrypt. Dziękuję!
________________________ Porady dla twórców gier
Nie ma śniegu, a zgubiłem normalny avatar :I
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum