UltimaForum

Skrypty [XP] - Wymagania broni i pancerza XP

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]]
#
#===================================================================

# KONFIGURACJA
module AYENE
  module EQUIP_REQ
   
   WEAPON = []
   ARMOR = []

# ~~~~~~~~~~~~~~~~~BRONIE~~~~~~~~~~~~~~~~
 
  # WEAPON [ID broni] = [lv, maxhp, maxsp, str, dex, agi, int, [skill_id, skill_id, ...]]
   
  WEAPON[1] = [1, 0, 0, 10, 0, 0, 0, []]   
  WEAPON[3] = [3, 500, 20, 0, 0, 0, 0, []]
   
# ~~~~~~~~~~~~~~~~PANCERZE~~~~~~~~~~~~~~~~
   
  # ARMOR [ID pancerza] = [lv, maxhp, maxsp, str, dex, agi, int, [skill_id, skill_id, ...]]
   
  ARMOR[1] = [0, 0, 10, 0, 0, 0, 0, [1, 2]]
  ARMOR[2] = [0, 0, 0, 10, 0, 0, 0, []]
  ARMOR[3] = [3, 400, 0, 0, 0, 0, 0, []]
     
  ACC_TEXT = "By założyć ten przedmiot musisz mieć:"
  PARAM_NAMES = ["Poziom", "Żywotność", "Moc", "Siła", "Zręczność", "Szybkość", "Inteligencja", "Umiejętności:"]   
 
  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

#===================================================================
# Window_Help
#===================================================================
class Window_EquipReq < Window_Base
  include AYENE::EQUIP_REQ
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     item       : item
  #     data       : parameters (array)
  #     actor      : actor
  #     skill      : skill
  #--------------------------------------------------------------------------
  def initialize(item, data, actor, skill)   
    if skill.empty? or !SHOW_SKILL_REQ
      height = (data.size+1) / 2 * WLH + WLH + 32
    else
      height = (data.size+1) / 2 * WLH + WLH + 32 + WLH * [skill.size, 7].min
    end     
    super(100, 200 - height/2, 460, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 1000
    self.opacity = 255
    self.contents.font.color = crisis_color
    self.contents.draw_text(4, 0, self.width - 40, WLH, ACC_TEXT, 1)
    x = 10
    y = WLH
    data.each_with_index{|array, i|   
      self.contents.font.color = system_color
      self.contents.draw_text(x+i%2*240, y+i/2*WLH, 200, WLH, PARAM_NAMES[array[0]].to_s, 0)     
      self.contents.font.color = normal_color
      self.contents.draw_text(x+120+i%2*240, y+i/2*WLH, 40, WLH, array[1].to_s, 2)
    }
    if !skill.empty? and SHOW_SKILL_REQ
      size = (data.size+1)/2*WLH
      self.contents.font.color = system_color
      self.contents.draw_text(x, y+size, 200, WLH, PARAM_NAMES[7].to_s, 0)   
      self.contents.font.color = normal_color
      skill.each_with_index{|id, i|     
        self.contents.draw_text(x+140, y+size+WLH*i, 200, WLH, "- #{$data_skills[id].name}", 0)       
      }
    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 :oops:
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 :shock:
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ę:
Kod:
self.contents = Bitmap.new(width - 32, height - 32)

i po niej dodać:
Kod:
self.contents.font.name = $defaultfonttype
    self.contents.font.size = $defaultfontsize


Wszystko powinno działać.

Bezel - Wto 13 Kwi, 2010 14:01

łapcie demo uwielbiam wam je dawać ^^ http://www.mediafire.com/?zjfjmmdyldj
poko67 - Pią 09 Lip, 2010 08:48

A ja uwiebiam je brać... :faja:

[ 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=4566

Nikoś - Sob 04 Wrz, 2010 09:52

Pobierz wszystkie biblioteki i wgraj do C:\Windows\System32\

Powinno zadziałać :p

sebastiankuklicz - 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:
Kod:
# ~~~~~~~~~~~~~~~~~BRONIE~~~~~~~~~~~~~~~~
 
  # WEAPON [ID broni] = [lv, str, dex, agi, int]
   
  WEAPON[2] = [2, 0, 0, 0, 0]   
  WEAPON[3] = [3, 0, 0, 0, 0]     
   
# ~~~~~~~~~~~~~~~~PANCERZE~~~~~~~~~~~~~~~~
   # ARMOR [ID pancerza] = [lv, str, dex, agi, int]   

   
  ARMOR[2] = [1, 0, 0, 0, 0]
  ARMOR[3] = [3, 0, 0, 0, 0]


Schemat na przykładzie:
Kod:
ARMOR[2] = [1, 0, 0, 0, 0]

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 ;]]] :-P a ja pomoge ;] :przytul:
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 :mrgreen:
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:
Kod:
# ~~~~~~~~~~~~~~~~~BRONIE~~~~~~~~~~~~~~~~
 
  # WEAPON [ID broni] = [lv, str, dex, agi, int]
   
  WEAPON[2] = [2, 0, 0, 0, 0]   
  WEAPON[3] = [3, 0, 0, 0, 0]     



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.
#===================================================================

module AYENE     
   WEAPON = []
   ARMOR = []
# ~~~~~~~~~~~~~~~~~BRONIE~~~~~~~~~~~~~~~~
 
  # WEAPON [ID broni] = [lv, str, dex, agi, int]
   
  WEAPON[2] = [2, 0, 0, 0, 0]   
  WEAPON[3] = [3, 0, 0, 0, 0]     
   
# ~~~~~~~~~~~~~~~~PANCERZE~~~~~~~~~~~~~~~~
   # ARMOR [ID pancerza] = [lv, str, dex, agi, int]   

   
  ARMOR[2] = [1, 0, 0, 0, 0]
  ARMOR[3] = [3, 0, 0, 0, 0]
   
# ~~~~~~~~~~~~~~~~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


adoksz - Czw 27 Sty, 2011 12:34

takk wlasnie dla kazdego przedmiotu osobny tekst :->
Ayene - Czw 27 Sty, 2011 12:39

Spróbuj tego:
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.
#===================================================================

module AYENE     
   WEAPON = []
   ARMOR = []
   WEAPON_TEXT = []
   ARMOR_TEXT = []
   
# ~~~~~~~~~~~~~~~~~BRONIE~~~~~~~~~~~~~~~~
 
  # WEAPON [ID broni] = [lv, str, dex, agi, int]
   
  WEAPON[2] = [2, 0, 0, 0, 0]   
  WEAPON[3] = [3, 0, 0, 0, 0]
 
  WEAPON_TEXT[2] = "jakiś tekst"
  WEAPON_TEXT[3] = "jakiś tekst"
   
# ~~~~~~~~~~~~~~~~PANCERZE~~~~~~~~~~~~~~~~
   # ARMOR [ID pancerza] = [lv, str, dex, agi, int] 
   
  ARMOR[2] = [1, 0, 0, 0, 0]
  ARMOR[3] = [3, 0, 0, 0, 0]   

  ARMOR_TEXT[2] = "jakiś tekst"
  ARMOR_TEXT[3] = "jakiś tekst"

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[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?:
Kod:
# ~~~~~~~~~~~~~~~~~BRONIE~~~~~~~~~~~~~~~~
 
  # WEAPON [ID broni] = [lv, str, dex, agi, int]
   
  WEAPON[2] = [2, 0, 0, 0, 0]   
  WEAPON[3] = [3, 0, 0, 0, 0]
 
 # WEAPON_TEXT[2] = "jakiś tekst"
  WEAPON_TEXT[3] = "jakiś tekst"


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 :-P
m4t3us2 - Nie 22 Lip, 2012 00:02
Temat postu: Wmagania broni
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:




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]]
#
#===================================================================

# KONFIGURACJA
module AYENE
  module EQUIP_REQ
   
   WEAPON = []
   ARMOR = []
   WEAPON_TEXT = []
   ARMOR_TEXT = []

# ~~~~~~~~~~~~~~~~~BRONIE~~~~~~~~~~~~~~~~
 
  # WEAPON [ID broni] = [lv, maxhp, maxsp, str, dex, agi, int, [skill_id, skill_id, ...]]
   
  WEAPON[1] = [2, 10, 10, 10, 10, 10, 10, [4]]   
  WEAPON[3] = [3, 500, 20, 0, 0, 0, 0, []]
 
  WEAPON_TEXT[1] = "jakiś tekst"
  WEAPON_TEXT[3] = "jakiś tekst"
 
# ~~~~~~~~~~~~~~~~PANCERZE~~~~~~~~~~~~~~~~
   
  # ARMOR [ID pancerza] = [lv, maxhp, maxsp, str, dex, agi, int, [skill_id, skill_id, ...]]
   
  ARMOR[2] = [1, 300, 0, 0, 0, 0, 0, []]
  ARMOR[3] = [3, 400, 0, 0, 0, 0, 0, []]
 
  ARMOR_TEXT[2] = "jakiś tekst"
  ARMOR_TEXT[3] = "jakiś tekst"
     
  ACC_TEXT = "By założyć ten przedmiot musisz mieć:"
  PARAM_NAMES = ["Poziom", "Żywotność", "Moc", "Siła", "Zręczność", "Szybkość", "Inteligencja", "Umiejętności:"]   
 
  SHOW_SKILL_REQ = true  # Czy wyświetlać, jakiej umiejętności brakuje?
 
  WLH = 32
  end
end

#===================================================================
# Game_Actor
#===================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * 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
end

#===================================================================
# Window_Help
#===================================================================
class Window_EquipReq < Window_Base
  include AYENE::EQUIP_REQ
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     item       : item
  #     data       : parameters (array)
  #     actor      : actor
  #     skill      : skill
  #--------------------------------------------------------------------------
  def initialize(item, data, actor, skill)   
    if skill.empty? or !SHOW_SKILL_REQ
      height = (data.size+1) / 2 * WLH + WLH + 32
    else
      height = (data.size+1) / 2 * WLH + WLH + 32 + WLH * [skill.size, 7].min
    end     
    super(100, 200 - height/2, 460, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 1000
    self.opacity = 255
    self.contents.font.color = crisis_color
    self.contents.draw_text(4, 0, self.width - 40, WLH, ACC_TEXT, 1)
    x = 10
    y = WLH
    data.each_with_index{|array, i|   
      self.contents.font.color = system_color
      self.contents.draw_text(x+i%2*240, y+i/2*WLH, 200, WLH, PARAM_NAMES[array[0]].to_s, 0)     
      self.contents.font.color = normal_color
      self.contents.draw_text(x+120+i%2*240, y+i/2*WLH, 40, WLH, array[1].to_s, 2)
    }
    if !skill.empty? and SHOW_SKILL_REQ
      size = (data.size+1)/2*WLH
      self.contents.font.color = system_color
      self.contents.draw_text(x, y+size, 200, WLH, PARAM_NAMES[7].to_s, 0)   
      self.contents.font.color = normal_color
      skill.each_with_index{|id, i|     
        self.contents.draw_text(x+140, y+size+WLH*i, 200, WLH, "- #{$data_skills[id].name}", 0)       
      }
    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]
      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]]
#
#===================================================================

# KONFIGURACJA
module AYENE
  module EQUIP_REQ
   
   WEAPON = []
   ARMOR = []

# ~~~~~~~~~~~~~~~~~BRONIE~~~~~~~~~~~~~~~~
 
  # WEAPON [ID broni] = [lv, maxhp, maxsp, str, dex, agi, int, [skill_id, skill_id, ...]]
   
  WEAPON[1] = [2, 10, 10, 10, 10, 10, 10, [4]]   
  WEAPON[3] = [3, 500, 20, 0, 0, 0, 0, []]
   
# ~~~~~~~~~~~~~~~~PANCERZE~~~~~~~~~~~~~~~~
   
  # ARMOR [ID pancerza] = [lv, maxhp, maxsp, str, dex, agi, int, [skill_id, skill_id, ...]]
   
  ARMOR[2] = [1, 300, 0, 0, 0, 0, 0, []]
  ARMOR[3] = [3, 400, 0, 0, 0, 0, 0, []]
     
  ACC_TEXT = "By założyć ten przedmiot musisz mieć:"
  PARAM_NAMES = ["Poziom", "Żywotność", "Moc", "Siła", "Zręczność", "Szybkość", "Inteligencja", "Umiejętności:"]   
 
  SHOW_SKILL_REQ = true  # Czy wyświetlać, jakiej umiejętności brakuje?
 
  WLH = 32
  end
end

#===================================================================
# Game_Actor
#===================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Determine if Item can be Equiped (Actor's Parameters)
  #     stat    : stats
  #--------------------------------------------------------------------------
  def equip_allowed?(stat)
    return true if stat[0] <= level && stat[1] <= maxhp &&
          stat[2] <= maxsp && stat[3] <= str &&
          stat[4] <= dex && stat[5] <= agi &&
          stat[6] <= 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
end

#===================================================================
# Window_Help
#===================================================================
class Window_EquipReq < Window_Base
  include AYENE::EQUIP_REQ
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     item       : item
  #     data       : parameters (array)
  #     actor      : actor
  #     skill      : skill
  #--------------------------------------------------------------------------
  def initialize(item, data, actor, skill)   
    if skill.empty? or !SHOW_SKILL_REQ
      height = (data.size+1) / 2 * WLH + WLH + 32
    else
      height = (data.size+1) / 2 * WLH + WLH + 32 + WLH * [skill.size, 7].min
    end     
    super(100, 200 - height/2, 460, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 1000
    self.opacity = 255
    self.contents.font.color = crisis_color
    self.contents.draw_text(4, 0, self.width - 40, WLH, ACC_TEXT, 1)
    x = 10
    y = WLH
    data.each_with_index{|array, i|   
      self.contents.font.color = system_color
      self.contents.draw_text(x+i%2*240, y+i/2*WLH, 200, WLH, PARAM_NAMES[array[0]].to_s, 0)     
      self.contents.font.color = normal_color
      self.contents.draw_text(x+120+i%2*240, y+i/2*WLH, 40, WLH, array[1].to_s, 2)
    }
    if !skill.empty? and SHOW_SKILL_REQ
      size = (data.size+1)/2*WLH
      self.contents.font.color = system_color
      self.contents.draw_text(x, y+size, 200, WLH, PARAM_NAMES[7].to_s, 0)   
      self.contents.font.color = normal_color
      skill.each_with_index{|id, i|     
        self.contents.draw_text(x+140, y+size+WLH*i, 200, WLH, "- #{$data_skills[id].name}", 0)       
      }
    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
  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

:jupi: Już działa, dzięki. Jesteś wielka :-D
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 :-P ) ;-)
Ayene - Wto 24 Lip, 2012 09:13

Feniks, masz tam taki fragment:
Kod:
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

podmień go na:
Kod:
def equip_allowed?(stat)
    return true if stat[0] <= level && stat[1] <= maxhp &&
          stat[2] <= maxsp && stat[3] <= str &&
          stat[4] <= dex && stat[5] <= agi &&
          stat[6] <= int && equip_skill_allowed?(stat)
    return false
  end

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 :-P
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.


Powered by phpBB modified by Przemo © 2003 phpBB Group