Mam 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:
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: 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
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
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: 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
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 )
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
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: 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ć.
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)
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: 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.
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