Ayene - Pią 26 Mar, 2010 18:28 Temat postu: Wymagania broni i pancerza XP
~ Wymagania broni i pancerza XP ~
Krótki opis
Wielokrotnie na forum pojawiały się prośby o skrypt, który umożliwiałby ustawienie wymagań dla broni i pancerza, przykładowo ekwipowanie bohatera w topór dwuręczny byłoby możliwe dopiero po osiągnięciu konkretnego poziomu lub posiadaniu odpowiedniej siły. Otóż po wielu próbach i podejściach wreszcie udało mi się coś takiego zrobić. Mam nadzieję, że skrypt będzie działał bez zarzutów.
Zalecane dokładne testy kompatybilności z innymi (niż domyślny) systemami walki.
Autor skryptu
Ayene [yurika@o2.pl]
Kompatybilność
Tylko XP
Skrypt
Spoiler:
Kod:
#===================================================================
# Wymagania broni i pancerza [XP]
# by Ayene
# 26.03.2010 ver 1.3
# 04.03.2012 - dodano wymóg posiadania umiejętności
# 10.08.2012 - poprawiono zmianę ekwipunku w Scene_Equip
# www.ultimateam.pl
#===================================================================
# Opis:
# Skrypt umożliwia ustawienie wymagań dla broni i pancerza.
# Na przykład ekwipowanie bohatera w topór dwuręczny byłoby możliwe
# dopiero po osiągnięciu konkretnego poziomu lub posiadaniu odpowiedniej
# statystyki. Ponadto dodano opcję, dzięki której można wprowadzić wymóg
# posiadania odpowiedniej umiejętności.
#
# Instrukcja:
# By skorzystać ze skryptu należy skonfigurować wymagania (osobno dla każdej
# broni i pancerza) poniżej, zgodnie ze wzorem:
#
# WEAPON [ID broni] = [lv, maxhp, maxsp, str, dex, agi, int, [skill_id, skill_id, ...]]
#
# gdzie:
# LV - wymagany poziom postaci
# MAXHP - maksymalne HP (max HP)
# MAXMP - maksymalne MP (max MP)
# STR - siła (strength)
# DEX - zręczność (dexterity)
# AGI - szybkość (agility)
# INT - inteligencja (intelligence)
# SKILL_ID - ID umiejętności
#
# Przykładowo:
# Jeśli chcesz, by postać mogła ekwipować broń ID 2 na poziomie 6, dodatkowo
# pod warunkiem, że ma 120 max. HP, 40 siły i 70 inteligencji
# poniżej w sekcji BRONIE wpisz:
# WEAPON [2] = [6, 120, 0, 40, 0, 0, 70, []]
#
# Natomiast, aby założyć pancerz ID 3, który "wymaga" odpowiedniej zręczności
# i znajomości umiejętności o ID 10 i 40:
# ARMOR [3] = [0, 0, 0, 0, 70, 0, 0, [10, 40]]
#
#===================================================================
SHOW_SKILL_REQ = true # Czy wyświetlać, jakiej umiejętności brakuje?
WLH = 32
end
end
#===================================================================
# Game_Actor
#===================================================================
class Game_Actor < Game_Battler
include AYENE::EQUIP_REQ
#--------------------------------------------------------------------------
# * Determine if Item can be Equiped (Actor's Parameters)
# stat : stats
#--------------------------------------------------------------------------
def equip_allowed?(stat)
return true if stat[0] <= level && stat[1] <= base_maxhp &&
stat[2] <= base_maxsp && stat[3] <= base_str &&
stat[4] <= base_dex && stat[5] <= base_agi &&
stat[6] <= base_int && equip_skill_allowed?(stat)
return false
end
#--------------------------------------------------------------------------
# * Determine if Item can be Equiped (Actor's Skills )
# stat : stats
#--------------------------------------------------------------------------
def equip_skill_allowed?(stat)
return true if stat[7].empty?
stat[7].each{|skill_id|
return false if !skill_learn?(skill_id)
}
return true
end
#--------------------------------------------------------------------------
# * Check Change Equip
#--------------------------------------------------------------------------
def check_change_equip
for i in 0..4
case i
when 0
item = $data_weapons[@weapon_id]
stat = WEAPON[item.id]
if !stat.nil? && !equip_allowed?(stat)
$game_party.gain_weapon(@weapon_id, 1)
@weapon_id = 0
end
when 1
item = $data_armors[@armor1_id]
stat = ARMOR[item.id]
if !stat.nil? && !equip_allowed?(stat)
$game_party.gain_armor(@armor1_id, 1)
@armor1_id = 0
end
when 2
item = $data_armors[@armor2_id]
stat = ARMOR[item.id]
if !stat.nil? && !equip_allowed?(stat)
$game_party.gain_armor(@armor2_id, 1)
@armor2_id = 0
end
when 3
item = $data_armors[@armor3_id]
stat = ARMOR[item.id]
if !stat.nil? && !equip_allowed?(stat)
$game_party.gain_armor(@armor3_id, 1)
@armor3_id = 0
end
when 4
item = $data_armors[@armor4_id]
stat = ARMOR[item.id]
if !stat.nil? && !equip_allowed?(stat)
$game_party.gain_armor(@armor4_id, 1)
@armor4_id = 0
end
end
end
end
end
#===================================================================
# Scene_Equip
#===================================================================
class Scene_Equip
include AYENE::EQUIP_REQ
#--------------------------------------------------------------------------
# * Aliased Definitions
#--------------------------------------------------------------------------
alias ayene_item_stats_sceq_update update
alias ayene_item_stats_sceq_update_item update_item
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
@req_window != nil ? update_spec_selection : ayene_item_stats_sceq_update
end
#--------------------------------------------------------------------------
# * Frame Update (when item window is active)
#--------------------------------------------------------------------------
def update_item
@stat = nil
item = @item_window.item
case item
when RPG::Weapon
@stat = WEAPON[item.id]
else
@stat = ARMOR[item.id]
end
unless @stat == nil
if Input.trigger?(Input::C) && !@actor.equip_allowed?(@stat)
$game_system.se_play($data_system.buzzer_se)
@item_window.active = false
show_spec_window
return
end
end
ayene_item_stats_sceq_update_item
check_change_equip if Input.trigger?(Input::C)
end
#--------------------------------------------------------------------------
# * Check Change Equip
#--------------------------------------------------------------------------
def check_change_equip
@actor.check_change_equip
@right_window.refresh
@item_window1.refresh
@item_window2.refresh
@item_window3.refresh
@item_window4.refresh
@item_window5.refresh
end
#--------------------------------------------------------------------------
# * Frame Update (when requirements window is active)
#--------------------------------------------------------------------------
def update_spec_selection
@frame < 100 ? @frame += 1 : @frame = 0
if @frame == 100 or Input.trigger?(Input::C) or Input.trigger?(Input::B)
@req_window.dispose
@req_window = nil
@item_window.active = true
end
end
#--------------------------------------------------------------------------
# * Show Requirements Window
#--------------------------------------------------------------------------
def show_spec_window
@frame = 0
data = []
@stat.each_with_index {|value, type|
data.push([type, value]) if value > 0 if type < 7
}
data.sort!{|a,b| a[0] <=> b[0]}
skill = @stat[7]
@req_window = Window_EquipReq.new(@item, data, @actor, skill)
end
end
#===================================================================
# Game_Interpreter
#===================================================================
class Interpreter
include AYENE::EQUIP_REQ
#--------------------------------------------------------------------------
# * Aliased Definitions
#--------------------------------------------------------------------------
alias aye_command_315 command_315
alias aye_command_316 command_316
alias aye_command_317 command_317
alias aye_command_318 command_318
#--------------------------------------------------------------------------
# * Change EXP
#--------------------------------------------------------------------------
def command_315
aye_command_315
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Change Level
#--------------------------------------------------------------------------
def command_316
aye_command_316
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Change Parameters
#--------------------------------------------------------------------------
def command_317
aye_command_317
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Change Skills
#--------------------------------------------------------------------------
def command_318
aye_command_318
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Check Equipment
# actor : actor
#--------------------------------------------------------------------------
def check_change_equip(actor)
for i in 0..4
case i
when 0
item = $data_weapons[actor.weapon_id]
stat = WEAPON[item.id]
when 1
item = $data_armors[actor.armor1_id]
stat = ARMOR[item.id]
when 2
item = $data_armors[actor.armor2_id]
stat = ARMOR[item.id]
when 3
item = $data_armors[actor.armor3_id]
stat = ARMOR[item.id]
when 4
item = $data_armors[actor.armor4_id]
stat = ARMOR[item.id]
end
actor.equip(i, 0) if !stat.nil? && !actor.equip_allowed?(stat)
end
end
end
Demo
niepotrzebne
Screenshot
Spoiler:
Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.
Piszcie w razie problemów.dominikos - Nie 28 Mar, 2010 18:17 Mogłabyś zamieścić to w demie?
[ Dodano: Czw 01 Kwi, 2010 08:51 ]
Mogłabyś zamieścić to w demie? Bo jak włączam ekwipunek to wyskakuje błąd a pisze tam : ?????????????????????maksymilian - Pon 05 Kwi, 2010 19:02 fajny skrypcik właśnie gre MMORPG robie i wszelka pomoc mi się przyda Sabikku - Pon 05 Kwi, 2010 19:16
Cytat:
Mogłabyś zamieścić to w demie? Bo jak włączam ekwipunek to wyskakuje błąd a pisze tam : ?????????????????????
Najpewniej korzystasz z dziurawej polskiej wersji, która ma problemy z niektórymi skryptami.RtaMag2 - Pon 05 Kwi, 2010 21:43 Ja mam tą polską i mi działa niewiem co uwas takiego jest Bezel - Sob 10 Kwi, 2010 13:52 możliwe że nie współgra ze skryptem albo musisz jeszcze raz pobrać rm (zdarza się)Ayene - Sob 10 Kwi, 2010 14:03 Skrypt działa w polskiej wersji bez zarzutów. Najwyraźniej ponownie pojawił się problem kompatybilności. Należałoby przejrzeć wszystkie skrypty i sprawdzić, które z nich ingerują w Scene_Equip w trzy najważniejsze definicje: main, update i update_item. Można również spróbować przesunąć po prostu skrypt tak, aby był najbliżej Main (pod innymi dodatkowymi skryptami).
Jest tylko jeden malutki błąd, jeśli ktoś chce użyć skryptu w polskiej wersji RM. Nie wyświetla się napis informujący o tym, że nie można jeszcze używać przedmiotu.
Aby to zmienić należy odnaleźć linijkę:
Wszystko powinno działać.Bezel - Wto 13 Kwi, 2010 14:01 łapcie demo uwielbiam wam je dawać ^^ http://www.mediafire.com/?zjfjmmdyldjpoko67 - Pią 09 Lip, 2010 08:48 A ja uwiebiam je brać...
[ Dodano: Pią 09 Lip, 2010 09:51 ]
ej pisze ze plik skasowany...sitax5 - Sro 11 Sie, 2010 15:13 a mogłabyś taki zrobić do VX bo się na niego przerzuciłem.cj2 - Pon 23 Sie, 2010 19:40 @up
http://www.ultimateam.pl/viewtopic.php?t=4566Nikoś - Sob 04 Wrz, 2010 09:52 Pobierz wszystkie biblioteki i wgraj do C:\Windows\System32\
Powinno zadziałać :psebastiankuklicz - Wto 16 Lis, 2010 15:16 Hej mam prośbe bo jak czsytam to co piszesz to za ch^j niewiem oco kaman mugłbyś zrobic by było napisane konkretnie gdzie co bo nieczaje gdzie kody wpisywac co to module te by broni wymóg zrobic plisss!!!!!!!!!!Ayene - Wto 16 Lis, 2010 19:16 Faktycznie do d^py taka robota, że musisz się k^wa głowić nad jakimś skryptem. "Mugłbym" zrobić by było konkretnie napisane, choć wystarczy postępować zgodnie ze wzorem:
Gdzie [2] to id pancerza
[1, 0, 0, 0, 0] to kolejno wymagane parametry [lv, str, dex, agi, int]
Mam nadzieję, że teraz wiesz o co kaman.rpgmigara - Pią 14 Sty, 2011 13:22 Nie wiem jak to obsłużyć ;D??Ayene - Sob 15 Sty, 2011 20:10 rpgmigara, wystarczy przeczytać ze zrozumieniem mój wcześniejszy post.mlynarz - Pon 17 Sty, 2011 09:26 no fajne wszystko działa jeśli ktos jie umie napisać do mnie na pw ;]]] a ja pomoge ;] adoksz - Czw 27 Sty, 2011 12:06 a mozna tak zrobic ze przy kazdym przedmiocie pisze cos innego? bo chcem napisac np. "jeszcze nie mozesz tego nosic nie masz wymaganego 45 poziomu" a przy innym przedmiocie np. nie masz wymaganego 80 poziomu Ayene - Czw 27 Sty, 2011 12:19 adoksz, ale to dotyczy tylko poziomu? A co jak do tego dojdzie jeszcze statystyka?adoksz - Czw 27 Sty, 2011 12:29 ja chcem tylko zeby przy kazdym przedmiocie mozna bylo wpisac cos innego
np cos takiiego:
i pod tym by byl tekst ;)Ayene - Czw 27 Sty, 2011 12:32 Nie wiem... ale jak byś chciał to robić? Dla każdego przedmiotu osobny tekst? Może coś takiego Ci wystarczy?
Spoiler:
Kod:
#===================================================================
# Wymagania broni i pancerza [XP]
# by Ayene
# 26.03.2010 ver 1.3
# www.ultimateam.pl
#===================================================================
# Opis:
# Skrypt umożliwia ustawienie wymagań dla broni i pancerza.
# Na przykład ekwipowanie bohatera w topór dwuręczny byłoby możliwe
# dopiero po osiągnięciu konkretnego poziomu lub posiadaniu odpowiedniej
# statystyki.
#===================================================================
# ~~~~~~~~~~~~~~~~INFORMACJE~~~~~~~~~~~~~~~~
WEAPON_TEXT = "Nie możesz jeszcze nosić tej broni."
ARMOR_TEXT = "Nie możesz jeszcze nosić tego pancerza."
# Dodatkowy tekst informujący o wymaganym poziomie?
SPEC = true
SPEC_TEXT = "Nie masz %s poziomu."
end
class Scene_Equip
alias ayene_item_stats_sceq_main main
alias ayene_item_stats_sceq_update update
alias ayene_item_stats_sceq_update_item update_item
def main
@frame = 0
@frame_on = false
ayene_item_stats_sceq_main
end
def update
ayene_item_stats_sceq_update
if @frame_on
@frame += 1
end
if @frame > 40
@item_window.active = true
@frame = 0
@frame_on = false
end
end
def update_item
stat = nil
item = @item_window.item
case item
when RPG::Weapon
stat = AYENE::WEAPON[item.id]
text = AYENE::WEAPON_TEXT
when RPG::Armor
stat = AYENE::ARMOR[item.id]
text = AYENE::ARMOR_TEXT
end
unless stat == nil
if Input.trigger?(Input::C) &&
!(stat[0] <= @actor.level and stat[1] <= @actor.str and
stat[2] <= @actor.dex and stat[3] <= @actor.agi and
stat[4] <= @actor.int)
$game_system.se_play($data_system.buzzer_se)
@item_window.active = false
@frame_on = true
if AYENE::SPEC
tt = sprintf(AYENE::SPEC_TEXT, stat[0])
@help_window.set_text(text + " " + tt)
else
@help_window.set_text(text)
end
return
end
end
ayene_item_stats_sceq_update_item
end
end
#===================================================================
# Wymagania broni i pancerza [XP]
# by Ayene
# 26.03.2010 ver 1.3
# www.ultimateam.pl
#===================================================================
# Opis:
# Skrypt umożliwia ustawienie wymagań dla broni i pancerza.
# Na przykład ekwipowanie bohatera w topór dwuręczny byłoby możliwe
# dopiero po osiągnięciu konkretnego poziomu lub posiadaniu odpowiedniej
# statystyki.
#===================================================================
class Scene_Equip
alias ayene_item_stats_sceq_main main
alias ayene_item_stats_sceq_update update
alias ayene_item_stats_sceq_update_item update_item
def main
@frame = 0
@frame_on = false
ayene_item_stats_sceq_main
end
def update
ayene_item_stats_sceq_update
if @frame_on
@frame += 1
end
if @frame > 40
@item_window.active = true
@frame = 0
@frame_on = false
end
end
def update_item
stat = nil
item = @item_window.item
case item
when RPG::Weapon
stat = AYENE::WEAPON[item.id]
text = AYENE::WEAPON_TEXT[item.id]
when RPG::Armor
stat = AYENE::ARMOR[item.id]
text = AYENE::ARMOR_TEXT[item.id]
end
unless stat == nil
if Input.trigger?(Input::C) &&
!(stat[0] <= @actor.level and stat[1] <= @actor.str and
stat[2] <= @actor.dex and stat[3] <= @actor.agi and
stat[4] <= @actor.int)
$game_system.se_play($data_system.buzzer_se)
@item_window.active = false
@frame_on = true
unless text == nil
@help_window.set_text(text)
end
return
end
end
ayene_item_stats_sceq_update_item
end
end
adoksz - Czw 27 Sty, 2011 12:46 juhuu dziala tylko mam pytanie czy to jest jakis błąd?:
a dokladniej ta # przed WEAPON_TEXT[2] = "jakiś tekst"
bo to jest na zielono: # WEAPON_TEXT[2] = "jakiś tekst"Ayene - Czw 27 Sty, 2011 12:50 Jest na zielono, bo na początku linijki jest 'kratka', która sprawia, że program odczytuje tekst jako komentarz, czyli nieistotny dla niego fragment skryptu.adoksz - Czw 27 Sty, 2011 12:53 no tzn to błąd i tą 'kratkę' mam usunąć?Ayene - Czw 27 Sty, 2011 12:55 adoksz, spróbuj, a się przekonasz, czy to błąd?!Shlizer - Czw 27 Sty, 2011 13:34 Poczytaj sobie czym jest komentarz: http://pl.wikipedia.org/w...8informatyka%29 =)Ayene - Sob 17 Mar, 2012 16:26 Uwaga aktualizacja! Dodano wymóg posiadania umiejętności. Ponadto skrypt sprawdza, czy bohaterowi zmieniły się statsy i ewentualnie ściąga ekwipunek, którego bohater nie powinien mieć na sobie.Mateusz SSJ8 - Nie 18 Mar, 2012 13:37 Najlepiej byłoby ułożyć własnej roboty Bazę danych, gdzie ustawienia wymagań znajdują się bezpośrednio w klasie broni, jednak nie ma jeszcze skryptu wczytującego kody z plików spakowanych w archiwa bez wypakowywania ich.Feniks - Czw 19 Lip, 2012 22:33 Mam pytanie, czy dałabyś radę zrobić to samo, o co prosił adoksz, jednak z najnowszą aktualizacją? Bardzo mi to pomoże w pewnym potworku. Pozdrawiam m4t3us2 - Nie 22 Lip, 2012 00:02 Temat postu: Wmagania broniMam mały problem z tym skryptem i po wielu nieudanych próbach naprawy. Postanowiłem
poprosić o pomoc ^^ a więc, każda broń czy też zbroja która wymaga np siły bądź zręczności
nie może zostać założona, pomimo, że gracz posiada daną ilość siły czy też zręczności :/
oto ssy:
PS:Mam ang wersje rpg majkera ^^Ayene - Nie 22 Lip, 2012 08:24 A zdejmij miecz ze stali i napisz, ile masz siły?
Feniks, o to chodziło?
Spoiler:
Kod:
#===================================================================
# Wymagania broni i pancerza [XP]
# by Ayene
# 26.03.2010 ver 1.2
# 04.03.2012 - dodano wymóg posiadania umiejętności
# www.ultimateam.pl
#===================================================================
# Opis:
# Skrypt umożliwia ustawienie wymagań dla broni i pancerza.
# Na przykład ekwipowanie bohatera w topór dwuręczny byłoby możliwe
# dopiero po osiągnięciu konkretnego poziomu lub posiadaniu odpowiedniej
# statystyki. Ponadto dodano opcję, dzięki której można wprowadzić wymóg
# posiadania odpowiedniej umiejętności.
#
# Instrukcja:
# By skorzystać ze skryptu należy skonfigurować wymagania (osobno dla każdej
# broni i pancerza) poniżej, zgodnie ze wzorem:
#
# WEAPON [ID broni] = [lv, maxhp, maxsp, str, dex, agi, int, [skill_id, skill_id, ...]]
#
# gdzie:
# LV - wymagany poziom postaci
# MAXHP - maksymalne HP (max HP)
# MAXMP - maksymalne MP (max MP)
# STR - siła (strength)
# DEX - zręczność (dexterity)
# AGI - szybkość (agility)
# INT - inteligencja (intelligence)
# SKILL_ID - ID umiejętności
#
# Przykładowo:
# Jeśli chcesz, by postać mogła ekwipować broń ID 2 na poziomie 6, dodatkowo
# pod warunkiem, że ma 120 max. HP, 40 siły i 70 inteligencji
# poniżej w sekcji BRONIE wpisz:
# WEAPON [2] = [6, 120, 0, 40, 0, 0, 70, []]
#
# Natomiast, aby założyć pancerz ID 3, który "wymaga" odpowiedniej zręczności
# i znajomości umiejętności o ID 10 i 40:
# ARMOR [3] = [0, 0, 0, 0, 70, 0, 0, [10, 40]]
#
#===================================================================
#===================================================================
# Scene_Equip
#===================================================================
class Scene_Equip
include AYENE::EQUIP_REQ
#--------------------------------------------------------------------------
# * Aliased Definitions
#--------------------------------------------------------------------------
alias ayene_item_stats_sceq_update update
alias ayene_item_stats_sceq_update_item update_item
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
@req_window != nil ? update_spec_selection : ayene_item_stats_sceq_update
end
#--------------------------------------------------------------------------
# * Frame Update (when item window is active)
#--------------------------------------------------------------------------
def update_item
@stat = nil
item = @item_window.item
case item
when RPG::Weapon
@stat = WEAPON[item.id]
text = WEAPON_TEXT[item.id]
else
@stat = ARMOR[item.id]
text = ARMOR_TEXT[item.id]
end
unless @stat == nil
if Input.trigger?(Input::C) && !@actor.equip_allowed?(@stat)
$game_system.se_play($data_system.buzzer_se)
@item_window.active = false
show_spec_window
@help_window.set_text(text) unless text == nil
return
end
end
ayene_item_stats_sceq_update_item
end
#--------------------------------------------------------------------------
# * Frame Update (when requirements window is active)
#--------------------------------------------------------------------------
def update_spec_selection
@frame < 100 ? @frame += 1 : @frame = 0
if @frame == 100 or Input.trigger?(Input::C) or Input.trigger?(Input::B)
@req_window.dispose
@req_window = nil
@item_window.active = true
end
end
#--------------------------------------------------------------------------
# * Show Requirements Window
#--------------------------------------------------------------------------
def show_spec_window
@frame = 0
data = []
@stat.each_with_index {|value, type|
data.push([type, value]) if value > 0 if type < 7
}
data.sort!{|a,b| a[0] <=> b[0]}
skill = @stat[7]
@req_window = Window_EquipReq.new(@item, data, @actor, skill)
end
end
#===================================================================
# Game_Interpreter
#===================================================================
class Interpreter
include AYENE::EQUIP_REQ
#--------------------------------------------------------------------------
# * Aliased Definitions
#--------------------------------------------------------------------------
alias aye_command_315 command_315
alias aye_command_316 command_316
alias aye_command_317 command_317
alias aye_command_318 command_318
#--------------------------------------------------------------------------
# * Change EXP
#--------------------------------------------------------------------------
def command_315
aye_command_315
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Change Level
#--------------------------------------------------------------------------
def command_316
aye_command_316
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Change Parameters
#--------------------------------------------------------------------------
def command_317
aye_command_317
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Change Skills
#--------------------------------------------------------------------------
def command_318
aye_command_318
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Check Equipment
# actor : actor
#--------------------------------------------------------------------------
def check_change_equip(actor)
for i in 0..4
case i
when 0
item = $data_weapons[actor.weapon_id]
stat = WEAPON[item.id]
when 1
item = $data_armors[actor.armor1_id]
stat = ARMOR[item.id]
when 2
item = $data_armors[actor.armor2_id]
stat = ARMOR[item.id]
when 3
item = $data_armors[actor.armor3_id]
stat = ARMOR[item.id]
when 4
item = $data_armors[actor.armor4_id]
stat = ARMOR[item.id]
end
actor.equip(i, 0) if !stat.nil? && !actor.equip_allowed?(stat)
end
end
end
m4t3us2 - Nie 22 Lip, 2012 16:55 Miecz ze stali nie dodaje mi nic siły, jeżeli oto ci chodziło. Mam normalnie 20 siły :] bez niego.m4t3us2 - Nie 22 Lip, 2012 17:02 Rozkminiłem o co chodzi :D, ale nie wiem jak to naprawić. Przed chwilą zmieniłem postaci siłę w database na podstawową 15 i normalnie założył miecz. Ale ja chciałem mieć tak, że tylko to co sam sobie doda (ze skryptu na rozdawanie pkt co poziom) to będzie miał(ustawiłem, że do końca gry postać będzie miała w podstawie 10), widocznie ten skrypt nie zwiększa jego "bazowej" siły, tylko mu dodaje np: tak jak przedmiot :D
DZIWNE CO NIE ??Ayene - Nie 22 Lip, 2012 18:37 No tak, skrypt na rozdawanie nie dodaje do bazowych tylko to aktualnych. W moim skrypcie tego typu rozwiązanie jest o tyle niewskazane, że ktoś, aby założyć miecz, może nałożyć inne elementy ekwipunku podnoszące np. siłę, po czym je zdejmie, gdy ów miecz nałoży. Ale jeśli potrzebujesz, to zamień "wymagania..." na poniższy:
Spoiler:
Kod:
#===================================================================
# Wymagania broni i pancerza [XP]
# by Ayene
# 26.03.2010 ver 1.2
# 04.03.2012 - dodano wymóg posiadania umiejętności
# www.ultimateam.pl
#===================================================================
# Opis:
# Skrypt umożliwia ustawienie wymagań dla broni i pancerza.
# Na przykład ekwipowanie bohatera w topór dwuręczny byłoby możliwe
# dopiero po osiągnięciu konkretnego poziomu lub posiadaniu odpowiedniej
# statystyki. Ponadto dodano opcję, dzięki której można wprowadzić wymóg
# posiadania odpowiedniej umiejętności.
#
# Instrukcja:
# By skorzystać ze skryptu należy skonfigurować wymagania (osobno dla każdej
# broni i pancerza) poniżej, zgodnie ze wzorem:
#
# WEAPON [ID broni] = [lv, maxhp, maxsp, str, dex, agi, int, [skill_id, skill_id, ...]]
#
# gdzie:
# LV - wymagany poziom postaci
# MAXHP - maksymalne HP (max HP)
# MAXMP - maksymalne MP (max MP)
# STR - siła (strength)
# DEX - zręczność (dexterity)
# AGI - szybkość (agility)
# INT - inteligencja (intelligence)
# SKILL_ID - ID umiejętności
#
# Przykładowo:
# Jeśli chcesz, by postać mogła ekwipować broń ID 2 na poziomie 6, dodatkowo
# pod warunkiem, że ma 120 max. HP, 40 siły i 70 inteligencji
# poniżej w sekcji BRONIE wpisz:
# WEAPON [2] = [6, 120, 0, 40, 0, 0, 70, []]
#
# Natomiast, aby założyć pancerz ID 3, który "wymaga" odpowiedniej zręczności
# i znajomości umiejętności o ID 10 i 40:
# ARMOR [3] = [0, 0, 0, 0, 70, 0, 0, [10, 40]]
#
#===================================================================
#===================================================================
# Scene_Equip
#===================================================================
class Scene_Equip
include AYENE::EQUIP_REQ
#--------------------------------------------------------------------------
# * Aliased Definitions
#--------------------------------------------------------------------------
alias ayene_item_stats_sceq_update update
alias ayene_item_stats_sceq_update_item update_item
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
@req_window != nil ? update_spec_selection : ayene_item_stats_sceq_update
end
#--------------------------------------------------------------------------
# * Frame Update (when item window is active)
#--------------------------------------------------------------------------
def update_item
@stat = nil
item = @item_window.item
case item
when RPG::Weapon
@stat = WEAPON[item.id]
else
@stat = ARMOR[item.id]
end
unless @stat == nil
if Input.trigger?(Input::C) && !@actor.equip_allowed?(@stat)
$game_system.se_play($data_system.buzzer_se)
@item_window.active = false
show_spec_window
return
end
end
ayene_item_stats_sceq_update_item
end
#--------------------------------------------------------------------------
# * Frame Update (when requirements window is active)
#--------------------------------------------------------------------------
def update_spec_selection
@frame < 100 ? @frame += 1 : @frame = 0
if @frame == 100 or Input.trigger?(Input::C) or Input.trigger?(Input::B)
@req_window.dispose
@req_window = nil
@item_window.active = true
end
end
#--------------------------------------------------------------------------
# * Show Requirements Window
#--------------------------------------------------------------------------
def show_spec_window
@frame = 0
data = []
@stat.each_with_index {|value, type|
data.push([type, value]) if value > 0 if type < 7
}
data.sort!{|a,b| a[0] <=> b[0]}
skill = @stat[7]
@req_window = Window_EquipReq.new(@item, data, @actor, skill)
end
end
#===================================================================
# Game_Interpreter
#===================================================================
class Interpreter
include AYENE::EQUIP_REQ
#--------------------------------------------------------------------------
# * Aliased Definitions
#--------------------------------------------------------------------------
alias aye_command_315 command_315
alias aye_command_316 command_316
alias aye_command_317 command_317
alias aye_command_318 command_318
#--------------------------------------------------------------------------
# * Change EXP
#--------------------------------------------------------------------------
def command_315
aye_command_315
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Change Level
#--------------------------------------------------------------------------
def command_316
aye_command_316
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Change Parameters
#--------------------------------------------------------------------------
def command_317
aye_command_317
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Change Skills
#--------------------------------------------------------------------------
def command_318
aye_command_318
iterate_actor(@parameters[0]) do |actor|
check_change_equip(actor)
end
end
#--------------------------------------------------------------------------
# * Check Equipment
# actor : actor
#--------------------------------------------------------------------------
def check_change_equip(actor)
for i in 0..4
case i
when 0
item = $data_weapons[actor.weapon_id]
stat = WEAPON[item.id]
when 1
item = $data_armors[actor.armor1_id]
stat = ARMOR[item.id]
when 2
item = $data_armors[actor.armor2_id]
stat = ARMOR[item.id]
when 3
item = $data_armors[actor.armor3_id]
stat = ARMOR[item.id]
when 4
item = $data_armors[actor.armor4_id]
stat = ARMOR[item.id]
end
actor.equip(i, 0) if !stat.nil? && !actor.equip_allowed?(stat)
end
end
end
m4t3us2 - Nie 22 Lip, 2012 22:26 Już działa, dzięki. Jesteś wielka Feniks - Wto 24 Lip, 2012 08:26 Tak, oto chodziło, jednak znowu nie pomyślałem, że może to nie być zgodne z rozdawaniem pkt. co poziom Czy dałabyś jeszcze radę wpakować tam zgodność z rozdaniem pkt co poziom? Wybacz, czasem nie pomyślę, ale na pewno się odwdzięczę za pomoc(nie zdradzę jednak jak ) Ayene - Wto 24 Lip, 2012 09:13 Feniks, masz tam taki fragment:
i będzie śmigać.Feniks - Czw 26 Lip, 2012 13:28 Dopiero teraz mogłem spokojnie sprawdzić, czy ten tekst działa tak jak chcę i myślałem, że tamten jeden komunikat z pierwowzoru wyświetla tylko jeden komunikat(w sensie, że na jeden armor, ale to dawno myślałem i tak mi zostało, co nie zmienia faktu, że..) głupi jestem
Teraz użyłem tego skryptu z 1 postu i zamieniłem wszystko i wszystko śmiga z rozdawaniem, jednak moje(mam nadzieje) ostatnie pytanie, czy dałoby radę zrobić to tak, że kiedy włożę przedmiot, który dodaje któregoś tam parametru i mogę dzięki niemu nosić np. hełm(bo brakowało mi np. 2 siły, a ten przedmiot dodaje akurat 8 siły) to czy kiedy czas danego przedmiotu(np. mikstura siły na 2 min.) lub jakaś broń, zbroja czy inne wyposażenie które dodało mi dany/dane parametry zostanie zdjęte to hełm sam automatycznie się zdejmie? Przepraszam za kłopot Ayene - Pon 30 Lip, 2012 16:30 Przedmiot sam się zdejmie, gdy parametry zostaną zmienione na takie, które nie są wystarczającego do noszenia tego przedmiotu. Jest to domyślnie wbudowane w skrypt. Podobnie powinno być z soczkami. Jednak zawsze możesz sprawdzić.Feniks - Nie 05 Sie, 2012 14:06 Sprawdziłem - w innym wypadku nie pisałbym owej prośby
Założyłem ,,hełm" który dodał mi parametry, zdjąłem go, a tarcze nadal nosiłem(oczywiście po zdjęciu jej nie mogę założyć ponownie bez odpowiednich parametrów)Ayene - Pią 10 Sie, 2012 20:18 Ale sprawdzałeś wersję podstawową skryptu, czy po wprowadzeniu 'kompatybilności' na rozdawanie statystyk? Bo u mnie pierwszy działa bez zarzutów. Jeśli bardzo zależy Tobie na usprawnieniu wyślij mi fragment projektu ze wszystkimi swoimi skryptami. Zobaczę, co da się zrobić.
// EDIT
Uwaga, skrypt w pierwszym poście został zaktualizowany.