collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: (Tech) Skills kaufen  (Gelesen 1889 mal)

Offline wolfassguy

  • RTP-Mapper
  • *
  • Beiträge: 29
  • Lufia returns
(Tech) Skills kaufen
« am: Juni 02, 2009, 13:53:44 »
Ist es möglich über events skills zu kaufen ??? oder muss ich da schon ein skript benutzen ?
es soll eben so sein das man beim SHOP eine z.b feuer rolle kaufen kann und dan kann man einen
Helden auswählen und der lernt dann eben den Feuer zauber ... ist das möglich wenn ja wie ?

Re: Skills kaufen

Offline OceanBlue

  • Palmenfan
  • VX-Großmeister
  • *****
  • Beiträge: 822
  • Back from the Dead
Re: Skills kaufen
« Antwort #1 am: Juni 02, 2009, 14:00:20 »
Auch das ist relativ einfach handzuhaben.
1. Showchoices: Welcher Actor soll Skills lernen? Ralph, xxx, xxx, xxx
2. When: Ralph: welchen Skill soll Ralph lernen? Feuer, Wasser, xxx, xxx
3. When: Feuer: Conditional Branch: Feuer gelernt, wenn ja: du hast Feuer schon erlernt! wenn nein:
    conditional branch: Gold xxx (der Preis des Skills) vorhanden: wenn ja: Ralph erlernt Skill: Feuer; -xx Gold ; wenn nein: Du hast zu wenig Gold!

Und so weiter für jeden Skill und jeden Actor

Wenn dir das aber zu aufwendig ist, gibts auch ein gutes VX Skillshop-Script auf RPG-Revolution.com *seufz*

Edit@wolfassguy:

Du nervst mich nicht direkt, aber seitdem es RGSS gibt, machen sich halt viele nicht mehr die Mühe, die Dinge mit Events zu lösen, sondern verwenden Scripts. Dafür kannst du jetzt aber nichts^^
« Letzte Änderung: Juni 02, 2009, 14:42:38 von OceanBlue »


Re: Skills kaufen

Offline wolfassguy

  • RTP-Mapper
  • *
  • Beiträge: 29
  • Lufia returns
Re: Skills kaufen
« Antwort #2 am: Juni 02, 2009, 14:10:08 »
wow hört sich nach viel arbeit an :) hmm ... kannst du mir vllt den downloade link hier posten weil ich ahb immer propleme mit dieser seite ... sry das ich dich nerve  :(


Re: Skills kaufen

Offline Domin0e

  • Leaf in the Wind
  • Mr. MACK-Tile
  • ***
  • Beiträge: 237
    • Mein kleiner Blog~
Re: Skills kaufen
« Antwort #3 am: Juni 02, 2009, 14:11:27 »
Entweder du machst es so, wie OB es gesagt hat, oder du nimmst jenes Skillshop-Scripts, welches ich feundlicherweise mal reinstelle.. ;)

#==============================================================================
# Skill Shop for RMVX Ver 3.1
#==============================================================================
# By Nechigawara Sanzenin
# WARNING!! : This script can use on RPG Maker VX Only!! (XP Not Support)
#==============================================================================
# Buy Skill Option For RMVX
#==============================================================================
#Version Log
#==============================================================================
#2.0 Add Level requirement - Change Hero Select Window
#3.0 Change How to set Price , Add wait Level Up option
#3.0 Fixed Bug, Edit Price Key Word
#==============================================================================
=begin

How to Use:

You will add "$skill_shop =[Id of Skill]"  
To Call Script to set id of skill for sell.
You will add "$scene = Scene_Skill_Shop.new"  
To Call Skill Shop Windows.

Example:
$skill_shop = [1,2,3,6,7]
$scene = Scene_Skill_Shop.new

You can turn on/off option under "# Setting".
You can set text to use in Skill Shop under "# Learn Text".
You can add "[p-Price-]" for set Skill Price at Note in Skill Database.
Example : For set Price to 150

[p150]

You can set Skill that the fighter each person can learn under "# Hero Data".

You will setting look like this in Hero Data
[ID of skill, Level requirement for learn]

Example : if you want actor id 1 can learn skill id 1 at Lv 4
and can learn skill id 2 at lv 3. You will setting look like this

1 => [ #Id of Actor
  
  [1,4],[2,3],
  
  ],

=end
#==============================================================================
#module SKILL_SHOP
#==============================================================================
module SKILL_SHOP
  # Setting
  Wait_Lv_Up = false # Wait 1 Lv up for use skill from buy
  Show_cha = false # Show Charactor Graphic in Select Window
  # Learn Text
  How_Learn = "What 's hero can learn?"
  Can_Learn = "Can Learn"
  Can_Learn_Lv = "On Lv"
  Cant_Learn = "Can't Learn"
  Learnt = "Learnt"
  Teach = "Teach"
  Cancel = "Cancel"
  Next_Lv = "Next Lv"
  Can_use = "%s can use now!"
  # Price Data For Non Set
  PRICE = 100
  # Hero Data
  SKILL_BUY = {
  # Add what skill can hero buy Here
  # [ID of skill,Level]
  
  1 => [ #Id of Actor
  
  [1,4],[2,3],[3,1],
  
  ],
  
  2 => [ #Id of Actor
  
  [1,4],[2,3],[3,1],
  
  ],
  
  # End
  }
  # Add Price
  def self.skill_price(id)
    text = $data_skills[id].note
    text.scan(/\[p([0-9]+)\]/)
    if $1.to_i != 0 then
      price = $1.to_i
    else
      price = PRICE
    end
    return price
  end
  # Add Hero id
  def self.skill_buy(id)
    if SKILL_BUY.include?(id)
      return SKILL_BUY[id]
    else
      return []
    end
  end
end
#==============================================================================
#class Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  def setup(actor_id)
    actor = $data_actors[actor_id]
    @actor_id = actor_id
    @name = actor.name
    @character_name = actor.character_name
    @character_index = actor.character_index
    @face_name = actor.face_name
    @face_index = actor.face_index
    @class_id = actor.class_id
    @weapon_id = actor.weapon_id
    @armor1_id = actor.armor1_id
    @armor2_id = actor.armor2_id
    @armor3_id = actor.armor3_id
    @armor4_id = actor.armor4_id
    @level = actor.initial_level
    @exp_list = Array.new(101)
    make_exp_list
    @exp = @exp_list[@level]
    @skills = []
    @le_skills = []
    @le = []
    for i in self.class.learnings
      learn_skill(i.skill_id) if i.level <= @level
    end
    clear_extra_values
    recover_all
  end
  #--------------------------------------------------------------------------
  def le_skills
    result = []
    for i in @le_skills
      result.push($data_skills[i])
    end
    return result
  end
  #--------------------------------------------------------------------------
  def learn_le_skill(skill_id)
    unless skill_learn?($data_skills[skill_id])
      @le_skills.push(skill_id)
      @le_skills.sort!
    end
  end
  #--------------------------------------------------------------------------
  def forget_skill(skill_id)
    @skills.delete(skill_id)
    @le_skills.delete(skill_id)
  end
  #--------------------------------------------------------------------------
  def skill_learn?(skill)
    if @skills.include?(skill.id)
      return true
    elsif @le_skills.include?(skill.id)
      return true
    else
      return false
    end
  end
  #--------------------------------------------------------------------------
  def le_learn_skill(skill_id)
    unless @skills.include?(skill_id)
      @skills.push(skill_id)
      @skills.sort!
    end
  end
  #--------------------------------------------------------------------------
  def skill_can_use?(skill)
    return false if @le_skills.include?(skill.id)
    return false unless skill_learn?(skill)
    return super
  end
  #--------------------------------------------------------------------------
  def learn?(skill)
    learn = skill_learn?(skill)
    if learn == true
      return false
    else
      return true
    end
  end
  #--------------------------------------------------------------------------
  def le_skill?(skill)
    return @le_skills.include?(skill.id)
  end
  #--------------------------------------------------------------------------
  def display_level_up(new_skills)
    $game_message.new_page
    text = sprintf(Vocab::LevelUp, @name, Vocab::level, @level)
    $game_message.texts.push(text)
    for skill in new_skills
      unless @le.include?(skill.id)
        text = sprintf(Vocab::ObtainSkill, skill.name)
        $game_message.texts.push(text)
      end
    end
    for i in 0...@le.size
      id = @le[i]
      name = $data_skills[id].name
      text = sprintf(SKILL_SHOP::Can_use, name)
      $game_message.texts.push(text)
    end
    @le = []
  end
  #--------------------------------------------------------------------------
  alias inc_level_up level_up
  def level_up
    inc_level_up
    @le = []
    for i in 0...@le_skills.size
      id = @le_skills[i]
      le_learn_skill(id)
      @le.push(id)
    end
    @le_skills = []
  end
end
#==============================================================================
#class Window_Skill_ShopBuy
#==============================================================================
class Window_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  def refresh
    @data = []
    for skill in @actor.skills
      @data.push(skill)
      if skill.id == @actor.last_skill_id
        self.index = @data.size - 1
      end
    end
    for skill in @actor.le_skills
      @data.push(skill)
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    skill = @data[index]
    if skill != nil
      rect.width -= 4
      enabled = @actor.skill_can_use?(skill)
      draw_item_name(skill, rect.x, rect.y, enabled)
      if @actor.le_skill?(skill)
        text = SKILL_SHOP::Next_Lv
      else
        text = @actor.calc_mp_cost(skill)
      end
      self.contents.draw_text(rect, text, 2)
    end
  end
end
#==============================================================================
#class Window_Skill_ShopBuy
#==============================================================================
class Window_Skill_ShopBuy < Window_Selectable
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 304, 304)
    @skill_shop_goods = $skill_shop
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  def skill
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  def refresh
    @data = []
    for i in 0...@skill_shop_goods.size
      skill = $data_skills[@skill_shop_goods[i]]
      if skill != nil
        @data.push(skill)
      end
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  def draw_item(index)
    skill = @data[index]
    price = SKILL_SHOP.skill_price(skill.id)
    enabled = (price <= $game_party.gold)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    draw_item_name(skill, rect.x, rect.y, enabled)
    rect.width -= 4
    self.contents.draw_text(rect, price, 2)
  end
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(skill == nil ? "" : skill.description)
  end
end
#==============================================================================
#class Window_Skill_ShopStatus
#==============================================================================
class Window_Skill_ShopStatus < Window_Selectable
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 240, 304)
    @item = nil
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.members.size
    if @item != nil
      self.contents.font.color = system_color
      self.contents.draw_text(4, 0, 200, WLH, SKILL_SHOP::How_Learn)
      for actor in $game_party.members
        x = 4
        y = WLH * (2 + actor.index * 2)
        draw_actor_can_learn(actor, x, y)
      end
    end
  end
  #--------------------------------------------------------------------------
  def draw_actor_can_learn(actor, x, y)
    can = false
    lv = false
    ac_lv = 0
    can_learn = SKILL_SHOP.skill_buy(actor.id)
    id = @item.id
    for i in 0...can_learn.size
      if can_learn[i][0] == id
        can = true
        if can_learn[i][1] <= actor.level
          lv = true
        else
          lv = false
          ac_lv = can_learn[i][1]
        end
        break
      else
        can = false
      end
    end
    enabled = (can and lv and actor.learn?(@item))
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    if SKILL_SHOP::Show_cha
      name = actor.character_name
      index = actor.character_index
      size = contents.text_size(actor.name).width
      draw_character(name, index, x + 20 + size , y + 30)
    end
    self.contents.draw_text(x, y, 200, WLH, actor.name)
    if can == false
      text = SKILL_SHOP::Cant_Learn
    elsif can == true and lv == false
      ac = ac_lv.to_s
      text = SKILL_SHOP::Can_Learn_Lv + " " + ac + "+"
    elsif actor.learn?(@item) == false
      text = SKILL_SHOP::Learnt
    else
      text = SKILL_SHOP::Can_Learn
    end
    self.contents.draw_text(x, y, 200, WLH, text, 2)
  end
  #--------------------------------------------------------------------------
  def item=(item)
    if @item != item
      @item = item
      refresh
    end
  end
  #--------------------------------------------------------------------------
  def update_cursor
    if @index < 0
      self.cursor_rect.empty
    elsif @index < @item_max
      y = WLH * (2 + @index * 2)
      unless SKILL_SHOP::Show_cha
        self.cursor_rect.set(0, y , contents.width, WLH)
      else
        self.cursor_rect.set(0, y - 4, contents.width,34)
      end
    end
  end
end
#==============================================================================
#class Scene_Skill_Shop
#==============================================================================
class Scene_Skill_Shop < Scene_Base
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    create_command_window
    @viewport = Viewport.new(0, 0, 544, 416)
    @help_window = Window_Help.new
    @gold_window = Window_Gold.new(384, 56)
    @dummy_window = Window_Base.new(0, 112, 544, 304)
    @buy_window = Window_Skill_ShopBuy.new(0, 112)
    @buy_window.active = false
    @buy_window.visible = false
    @buy_window.help_window = @help_window
    @status_window = Window_Skill_ShopStatus.new(304, 112)
    @status_window.visible = false
    @status_window.active = false
  end
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    dispose_command_window
    @help_window.dispose
    @gold_window.dispose
    @dummy_window.dispose
    @buy_window.dispose
    @status_window.dispose
  end  
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @help_window.update
    @command_window.update
    @gold_window.update
    @dummy_window.update
    @buy_window.update
    @status_window.update
    if @command_window.active
      update_command_selection
    elsif @buy_window.active
      update_buy_selection
    elsif @status_window.active
      update_target_selection
    end
  end
  #--------------------------------------------------------------------------
  def create_command_window
    s1 = SKILL_SHOP::Teach
    s2 = SKILL_SHOP::Cancel
    @command_window = Window_Command.new(384, [s1, s2], 2)
    @command_window.y = 56
  end
  #--------------------------------------------------------------------------
  def dispose_command_window
    @command_window.dispose
  end
  #--------------------------------------------------------------------------
  def update_command_selection
    @help_window.set_text("")
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      case @command_window.index
      when 0
        Sound.play_decision
        @command_window.active = false
        @dummy_window.visible = false
        @buy_window.active = true
        @buy_window.visible = true
        @buy_window.refresh
        @status_window.visible = true
      when 1
        Sound.play_decision
        $scene = Scene_Map.new
      end
    end
  end
  #--------------------------------------------------------------------------
  def update_buy_selection
    @status_window.item = @buy_window.skill
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.skill
      @price = SKILL_SHOP.skill_price(@item.id)
      enabled = (@price <= $game_party.gold)
      if not enabled
        Sound.play_buzzer
      else
        Sound.play_decision
        show_target_window
      end
    end
  end
  #--------------------------------------------------------------------------
  def update_target_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      hide_target_window
    elsif Input.trigger?(Input::C)
      @actor = $game_party.members[@status_window.index]
      can = false
      lv = false
      can_learn = SKILL_SHOP.skill_buy(@actor.id)
      id = @item.id
      for i in 0...can_learn.size
        if can_learn[i][0] == id
          can = true
          if can_learn[i][1] <= @actor.level
            lv = true
          else
            lv = false
          end
          break
        else
          can = false
        end
      end
      enabled = (can and lv and @actor.learn?(@item))
      if not enabled
        Sound.play_buzzer
      else
        learn_target(@item.id)
      end
    end
  end
  #--------------------------------------------------------------------------
  def learn_target(skill_id)
    Sound.play_shop
    unless SKILL_SHOP::Wait_Lv_Up
      @actor.learn_skill(skill_id)
    else
      @actor.learn_le_skill(skill_id)
    end
    $game_party.lose_gold(@price)
    @buy_window.refresh
    @gold_window.refresh
    @status_window.refresh
    hide_target_window
  end
  #--------------------------------------------------------------------------
  def show_target_window
    @buy_window.active = false
    @status_window.active = true
    @status_window.index = 0
  end
  #--------------------------------------------------------------------------
  def hide_target_window
    @buy_window.active = true
    @status_window.active = false
    @status_window.index =- 1
  end
end

Wie du was einstellen musst steht alles im Skript, wünsche viel Erfolg~

Gruß,
Domin0e
"Twelve highlanders and a bagpipe make a rebellion." - Scottish Proverb

Mein kleiner Blog

Re: Skills kaufen

Offline wolfassguy

  • RTP-Mapper
  • *
  • Beiträge: 29
  • Lufia returns
Re: Skills kaufen
« Antwort #4 am: Juni 02, 2009, 14:14:00 »
Hey cool danke :)

 


 Bild des Monats

rooftop party

Views: 4348
By: papilion

 Umfrage

  • Wer soll das BdM gewinnen?
  • Dot Kandidat 1
  • 3 (25%)
  • Dot Kandidat 2
  • 1 (8%)
  • Dot Kandidat 3
  • 2 (16%)
  • Dot Kandidat 4
  • 0 (0%)
  • Dot Kandidat 5
  • 6 (50%)
  • Stimmen insgesamt: 12
  • View Topic

 Schnellsuche





SimplePortal 2.3.3 © 2008-2010, SimplePortal