collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen  (Gelesen 1632 mal)

Offline DimiFW

  • Database-Verunstalter
  • **
  • Beiträge: 102
    • Freewar
Gibt es irgendeine Möglichkeit (z.b. per Script) die Critical Hits genauer ein zu stellen?

Re: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen

Offline PaRt

  • Aufschnitt... ähhh Durchschnitt!
  • Ralph
  • *
  • Beiträge: 5
Re: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen
« Antwort #1 am: Januar 08, 2011, 11:28:49 »
Soweit ich weiß wird die Crit Chance mit der AGI erhöht.
Also einfach mehr oder weniger AGI setzen.

Re: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen

Offline Syforc

  • Ich press die Frucht, brauch kein Messer junge
  • Mr. MACK-Tile
  • ***
  • Beiträge: 221
    • http://www.youtube.com/watch?v=VrdwhXNt4qw
Re: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen
« Antwort #2 am: Januar 08, 2011, 13:21:09 »
Ja gibt es, mit diesem Script kannst aussuchen wie viele Punkte du kriegst und kannst dann die Attribute Skillen ( ATK, MaxMP,MaxHP, STR,Crits, Ausweichen usw..)

Credits gehen an Lettuce
Spoiler for Hiden:
=begin
+------------------------------------------------------------------------------+
# ** Stat points distribution system 1.71                                      #
#                  By Lettuce.                                                 #
#                                                                              #
#                                                                              #
#Some help:                                                                    #
#     - Position wasn't stored properly in mode 1 (Thanks Akin)                #
#     - Some sort of notification to player (Thanks Akin)                      #
#     - Player switch now supports LEFT and RIGHT arrow (Thanks Akin)          #
#     - Advice on using class attr instead of global var (Thanks GoldenShadow) #
#                                                                              #
#------------------------------------------------------------------------------#
#  This script lets you distribute points onto your actor's stats              #
#                                                                              #
# Call scene using this: $scene = Scene_Stat_Dist.new(0)                       #
#                                                                              #
#                                                                              #
#  You can give points to your actors by using this code                       #
#                                                                              #
#    $game_party.members[<member ID>].points += <amount of points>               #
#                                                                              #
#  If you want your actor to get points after leveling:                        #
#  Under Game_Actor, in def change_exp, under the line level_up; paste this    #
#                                                                              #
#          difference = @level - last_level                                        #
#    $game_actors[@actor_id].points += <amount of points>                      #
#                                                                              #
#            OR (if you want RO mode; explained below)                              #
#                                                                              #
#      difference = @level - last_level                                        #
#      $game_actors[@actor_id].points += ((@level/5).floor+2).floor*difference #
#                                                                              #
# # It seems the game returns non 0 based array if we use game_party >.<;      #
#                                                                              #
#  **Note**                                                                    #
#  This script does not stop your actors from gaining stats points defined in  #
#  the database. It will just add to it.                                       #
#  Set the stats to 1 all the way in the database to disable growth            #
#                                                                              #
#  **Modes**                                                                   #
#  1 : Add one point to the attribute per point                                #
#  2 : Use RO system, attribute with value needs more points to increase.      #
#         Explanation: In RO, if you got high stats, you need more points to     #
#         increase it. So if you have 90 ATK and 5 INT...You can                 #
#         choose to use 10 points for 1 more ATK OR use that 10 points           #
#         to get 6 INT                                                           #
+------------------------------------------------------------------------------+
=end
############################### Configuration ##################################
#Starting points; how many points to give to actor at the beginning of the game
StartPoints = 8
#Maximum attribute point you allowed in your game
MaxStat = 500
MaxHP = 9999
MaxMP = 5000
     #Max hit, eva and crit rate are all in percentage
MaxHIT = 100
MaxEVA = 20
MaxCRIT = 50

    #How many points needed per increase
PointsPerHP = 2
PointsPerMP = 2
PointsPerHIT = 10
PointsPerEVA = 8
PointsPerCRIT = 6

#How many stats will increase per point?
IncreaseBy = 2
HPIncreaseBy = 25
MPIncreaseBy = 15
HITIncreaseBy = 5
EVAIncreaseBy = 1
CRITIncreaseBy = 1


#1 for normal mode, 2 or RO mode [points required calculated through formula]
Mode = 2
#You can chage font family and size here
Fontname = "Candara"
Fontsize = 18

LayoutMode = 2

#========================== End Configuration ==================================
OFFSET = -10
#==============================================================================
# ** Lettuce_Window_Top
#------------------------------------------------------------------------------
#  This window displays Title message
#==============================================================================

class Lettuce_Window_Top < Window_Base
  def initialize
   super(0,0,544,70)
   self.contents = Bitmap.new(width-32,height-32)
   self.contents.font.name = Fontname
   self.contents.font.size = Fontsize
   refresh
   end
   
  def refresh
   self.contents.clear
   self.contents.draw_text(0,-10,544-32,32,"Talents Distribution",1)
   self.contents.font.size = Fontsize-2
   self.contents.draw_text(0,10,544-32,32,"Use arrow keys to change character; points can only be assigned once.",1)
  end
   
end
#==============================================================================
# ** Lettuce_Window_Points
#------------------------------------------------------------------------------
#  This window displays the attributes of a party member
#==============================================================================
class Lettuce_Window_Points < Window_Base
  def initialize(member_index)
   super(401,320,144,52)
   self.contents = Bitmap.new(width-32,height-32)
   self.contents.font.name = Fontname
   self.contents.font.size = Fontsize
   refresh(member_index)
  end
 
  def refresh(member_index)
   actor = $game_party.members[member_index]
   points = actor.points
  self.contents.clear
   self.contents.draw_text(0,0,162,20,"Points: "+points.to_s)   
  end
end

#==============================================================================
# ** Lettuce_Window_Info
#------------------------------------------------------------------------------
#  This window displays the attributes of a party member
#==============================================================================

class Lettuce_Window_Info < Window_Base
  def initialize(member_index)
   super(0,71,400,346)
   self.contents = Bitmap.new(width-32,height-32)
   self.contents.font.name = Fontname
   self.contents.font.size = Fontsize
  @exo = 25 #equipment section X coordinate offset
  @exo2 = 35 #equipment section X coordinate offset
  @eyo = -10 #equipment section Y coordinate offset
   refresh(member_index)
  end
   
  def refresh(member_index)
   actor = $game_party.members[member_index]
   self.contents.clear
  self.contents.font.size = Fontsize
   draw_actor_face(actor,10,10,92)
   draw_actor_name(actor,120,10)
   self.contents.font.size = Fontsize
   self.contents.draw_text(190,30,200,20,"Class: "+actor.class.name)
   self.contents.draw_text(120,30,200,20,"Lv. "+actor.level.to_s)
 
  if LayoutMode == 1
    draw_actor_state(actor,200,280,168)
  elsif LayoutMode == 2
    draw_actor_state(actor,220,10)
  end
 
   s1 = actor.exp_s #total exp
  s2 = actor.current_lvl_exp #exp to get to this level
  if s1.is_a?(Numeric)
    s3 = s1-s2 #progress in this level
    s4 = actor.next_lvl_exp #exp needed for next level
    self.contents.font.size = Fontsize-3
    self.contents.draw_text(230,74,90,20,"EXP: "+s3.to_s+"/"+s4.to_s,0)
    self.contents.font.size = Fontsize
  else
    self.contents.draw_text(230,74,85,20,"-----/-----",2)
  end
   
   #Preparing bar colours
   back_color = Color.new(39, 58, 83, 255)
   
   str_color1 = Color.new(238, 238, 170, 255)
   str_color2 = Color.new(238, 221, 102, 255)
   
   def_color1 = Color.new(170, 221, 170, 255)
   def_color2 = Color.new(102, 153, 136, 255)
   
   spi_color1 = Color.new(170, 153, 187, 255)
   spi_color2 = Color.new(102,  85, 136, 255)
   
   agi_color1 = Color.new(150, 205, 205, 255)
   agi_color2 = Color.new( 66, 144, 164, 255)
 
  hp_color1 = Color.new(136, 187, 187, 255)
  hp_color2 = Color.new( 68, 119, 119, 255)
 
  mp_color1 = Color.new(136, 187, 238, 255)
  mp_color2 = Color.new( 68, 119, 187, 255)
 
  exp_color1 = Color.new(246, 243, 224, 255)
  exp_color2 = Color.new(255, 182, 0, 255)
  if s1.is_a?(Numeric)
    self.contents.fill_rect(230,90,89,7,back_color)
    self.contents.gradient_fill_rect(232,92,(85*s3)/s4,3,exp_color1,exp_color2)

  else
    self.contents.fill_rect(230,60,89,7,back_color)
  end
 
   
  self.contents.fill_rect(120,67,104,7,back_color)
   self.contents.gradient_fill_rect(122,69,100*actor.hp/actor.maxhp,3,hp_color1,hp_color2)
  self.contents.draw_text(120,44,100,30,"HP",0)
  self.contents.draw_text(120,44,100,30,actor.hp.to_s + "/" + actor.maxhp.to_s,2)
 
  self.contents.fill_rect(120,90,104,7,back_color)
   self.contents.gradient_fill_rect(122,92,100*actor.mp/actor.maxmp,3,mp_color1,mp_color2)
  self.contents.draw_text(120,67,100,30,"MP",0)
  self.contents.draw_text(120,67,100,30,actor.mp.to_s + "/" + actor.maxmp.to_s,2)
 
  ##weapons
  dual_w = true if actor.two_swords_style == true
  weapon = $data_weapons[actor.weapon_id]
 
  shield = $data_armors[actor.armor1_id]
  shield = dual_w ? $data_weapons[actor.armor1_id] : $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
 
 
 
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  evasion = 0
  crit = 4
 
  if $data_actors[actor.id].critical_bonus
    crit +=4
  end
 
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
    if weapon.critical_bonus
      crit += 4
    end
  end
  if dual_w && shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
    if weapon.critical_bonus
      crit += 4
    end
  end
  if shield && !dual_w
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
    evasion += shield.eva
  end
  if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
    evasion += helm.eva
  end
  if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
    evasion += body.eva
  end
  if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
    evasion += accessory.eva
  end
  if LayoutMode == 1
    draw_item_name(weapon,160+@exo,125+@eyo,true)
    if weapon
      two_hand = true if weapon.two_handed == true
     
    end
    if two_hand     
      draw_item_name(weapon,160+@exo,155+@eyo,true)
    elsif dual_w
      dweapon = $data_weapons[actor.armor1_id]
      draw_item_name(dweapon,160+@exo,155+@eyo,true)
    else
      draw_item_name(shield,160+@exo,155+@eyo,true)
    end
    draw_item_name(helm,160+@exo,185+@eyo,true)
    draw_item_name(body,160+@exo,215+@eyo,true)
    draw_item_name(accessory,160+@exo,245+@eyo,true)
   
    #Testing area for Weapon upgrade script
    #self.contents.font.size = Fontsize - 7
    #self.contents.draw_text(160+@exo,135,30,20,"[+"+weapon.level.to_s+"]",0)
   
    self.contents.font.color = Color.new(200,200,200,255)
    if !weapon
      #draw_icon(216,160+@exo,125+@eyo,true)
      self.contents.draw_text(184+@exo,127+@eyo,200,16,"<No Equipment>")
    end
    if !shield
      #draw_icon(217,160+@exo,155+@eyo,true)
      if !two_hand
      self.contents.draw_text(184+@exo,157+@eyo,200,16,"<No Equipment>")
      end
    end
    if !helm
      #draw_icon(218,160+@exo,185+@eyo,true)
      self.contents.draw_text(184+@exo,187+@eyo,200,16,"<No Equipment>")
    end
    if !body
      #draw_icon(219,160+@exo,215+@eyo,true)
      self.contents.draw_text(184+@exo,217+@eyo,200,16,"<No Equipment>")
    end
    if !accessory
      #draw_icon(220,160+@exo,245+@eyo,true)
      self.contents.draw_text(184+@exo,247+@eyo,200,16,"<No Equipment>")
    end
    self.contents.font.color = Color.new(255,255,255,255)
   
  elsif LayoutMode == 2
    draw_item_name(weapon,160+@exo2,125+OFFSET+@eyo,true)
    #if weapon
  if weapon
    two_hand = true if weapon.two_handed
  end
      if two_hand
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
      end
    #end
=begin
    if weapon.two_handed == true
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
    end
=end
    draw_item_name(helm,160+@exo2,205+OFFSET+@eyo,true)
    draw_item_name(body,160+@exo2,245+OFFSET+@eyo,true)
    draw_item_name(accessory,160+@exo2,285+OFFSET+@eyo,true)
   

     
      self.contents.font.color = Color.new(200,200,200,255)
    if !weapon
      #draw_icon(216,160+@exo2,125+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,127+OFFSET+@eyo,200,16,"<No Equipment>")
    end
    if weapon
    if !shield and weapon.two_handed == false
      #draw_icon(217,160+@exo2,165+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,167+OFFSET+@eyo,200,16,"<No Equipment>")
    end
    else
    if !shield
      #draw_icon(217,160+@exo2,165+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,167+OFFSET+@eyo,200,16,"<No Equipment>")
    end
    end
   
    if !helm
      #draw_icon(218,160+@exo2,205+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,207+OFFSET+@eyo,200,16,"<No Equipment>")
    end
    if !body
      #draw_icon(219,160+@exo2,245+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,247+OFFSET+@eyo,200,16,"<No Equipment>")
    end
    if !accessory
      #draw_icon(220,160+@exo2,285+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,287+OFFSET+@eyo,200,16,"<No Equipment>")
    end
    self.contents.font.color = Color.new(255,255,255,255)
  end
 
 
 
  self.contents.font.size = Fontsize-3
   self.contents.draw_text(10,120,100,20,Vocab::atk+": ")
   self.contents.draw_text(10,120,100,20,(actor.atk-bonus_atk).to_s+" + "+bonus_atk.to_s,2)
   
   self.contents.fill_rect(10,140,104,7,back_color)
   self.contents.gradient_fill_rect(12,142,((actor.atk-bonus_atk)*100)/MaxStat,3,str_color1,str_color2)
   
   self.contents.draw_text(10,150,100,20,Vocab::def+": ")
   self.contents.draw_text(10,150,100,20,(actor.def-bonus_def).to_s+" + "+bonus_def.to_s,2)
   
   self.contents.fill_rect(10,170,104,7,back_color)
   self.contents.gradient_fill_rect(12,172,((actor.def-bonus_def)*100)/MaxStat,3,def_color1,def_color2)
   
   self.contents.draw_text(10,180,100,20,Vocab::spi+": ")
   self.contents.draw_text(10,180,100,20,(actor.spi-bonus_spi).to_s+" + "+bonus_spi.to_s,2)
   
   self.contents.fill_rect(10,200,104,7,back_color)
   self.contents.gradient_fill_rect(12,202,((actor.spi-bonus_spi)*100)/MaxStat,3,spi_color1,spi_color2)
   
   self.contents.draw_text(10,210,100,20,Vocab::agi+": ")
   self.contents.draw_text(10,210,100,20,(actor.agi-bonus_agi).to_s+" + "+bonus_agi.to_s,2)
   
   self.contents.fill_rect(10,230,104,7,back_color)
   self.contents.gradient_fill_rect(12,232,((actor.agi-bonus_agi)*100)/MaxStat,3,agi_color1,agi_color2)
   
  if weapon
    hit_rate = weapon.hit
  else
    hit_rate = 95
  end
   
   
  self.contents.font.size = Fontsize-3
  self.contents.font.color = Color.new(162,212,98,255)
  self.contents.draw_text(1,245,100,20,"Maximum ATK :",2)
  self.contents.draw_text(1,260,100,20,"Hit rate (%) :",2)
  self.contents.draw_text(1,275,100,20,"Evasion rate (%) :",2)
  self.contents.draw_text(1,290,100,20,"Critical Rate (%) :",2)
 
  self.contents.draw_text(105,245,60,20,(actor.atk*4).to_s,0)
  self.contents.draw_text(105,260,60,20,actor.base_hit.to_s + "+" + actor.hitr.to_s,0)
  self.contents.draw_text(105,275,60,20,actor.base_eva.to_s + "+" +actor.evar.to_s,0)
  self.contents.draw_text(105,290,60,20,actor.base_cri.to_s + "+" + actor.crir.to_s,0)
 
  self.contents.font.size = Fontsize-4
  self.contents.font.color = text_color(16)
  self.contents.draw_text(135,260,60,20,"[Req:"+PointsPerHIT.to_s+"pt.]",2)
  self.contents.draw_text(135,275,60,20,"[Req:"+PointsPerEVA.to_s+"pt.]",2)
  self.contents.draw_text(135,290,60,20,"[Req:"+PointsPerCRIT.to_s+"pt.]",2)
 
  #self.contents.draw_text(120,260,60,20,(hit_rate+actor.hit_bonus).to_s,0)
  #self.contents.draw_text(120,275,60,20,(evasion+actor.eva).to_s,0)
  #self.contents.draw_text(120,290,60,20,(crit+actor.cri_bonus).to_s,0)
 
  if LayoutMode == 1
   
  self.contents.font.color = Color.new(155,199,206,255)
  self.contents.font.size = Fontsize-6
  if weapon
  self.contents.draw_text(185+@exo,140+@eyo,100,20,Vocab::atk+"+"+weapon.atk.to_s)
  self.contents.draw_text(219+@exo,140+@eyo,100,20,Vocab::def+"+"+weapon.def.to_s)
  self.contents.draw_text(253+@exo,140+@eyo,100,20,Vocab::spi+"+"+weapon.spi.to_s)
  self.contents.draw_text(287+@exo,140+@eyo,100,20,Vocab::agi+"+"+weapon.agi.to_s)
  end

  if shield
  self.contents.draw_text(185+@exo,170+@eyo,100,20,Vocab::atk+"+"+shield.atk.to_s)
  self.contents.draw_text(219+@exo,170+@eyo,100,20,Vocab::def+"+"+shield.def.to_s)
  self.contents.draw_text(253+@exo,170+@eyo,100,20,Vocab::spi+"+"+shield.spi.to_s)
  self.contents.draw_text(287+@exo,170+@eyo,100,20,Vocab::agi+"+"+shield.agi.to_s)
  end
 
  if helm
  self.contents.draw_text(185+@exo,200+@eyo,100,20,Vocab::atk+"+"+helm.atk.to_s)
  self.contents.draw_text(219+@exo,200+@eyo,100,20,Vocab::def+"+"+helm.def.to_s)
  self.contents.draw_text(253+@exo,200+@eyo,100,20,Vocab::spi+"+"+helm.spi.to_s)
  self.contents.draw_text(287+@exo,200+@eyo,100,20,Vocab::agi+"+"+helm.agi.to_s)
  end
 
  if body
  self.contents.draw_text(185+@exo,230+@eyo,100,20,Vocab::atk+"+"+body.atk.to_s)
  self.contents.draw_text(219+@exo,230+@eyo,100,20,Vocab::def+"+"+body.def.to_s)
  self.contents.draw_text(253+@exo,230+@eyo,100,20,Vocab::spi+"+"+body.spi.to_s)
  self.contents.draw_text(287+@exo,230+@eyo,100,20,Vocab::agi+"+"+body.agi.to_s)
  end
 
  if accessory
  self.contents.draw_text(185+@exo,260+@eyo,100,20,Vocab::atk+"+"+accessory.atk.to_s)
  self.contents.draw_text(219+@exo,260+@eyo,100,20,Vocab::def+"+"+accessory.def.to_s)
  self.contents.draw_text(253+@exo,260+@eyo,100,20,Vocab::spi+"+"+accessory.spi.to_s)
  self.contents.draw_text(287+@exo,260+@eyo,100,20,Vocab::agi+"+"+accessory.agi.to_s)
  end
  end
 
   if Mode == 2
     self.contents.font.size = Fontsize-6
     self.contents.font.color = Color.new(155,199,206,255)
     self.contents.draw_text(23,100,125,20,"POINTS",2)
     self.contents.draw_text(29,110,125,20,"REQUIRED",2)
     self.contents.font.size = Fontsize-2
     self.contents.draw_text(20,125,115,20,required(actor.atk-bonus_atk).to_s,2)
     self.contents.draw_text(20,155,115,20,required(actor.def-bonus_def).to_s,2)
     self.contents.draw_text(20,185,115,20,required(actor.spi-bonus_spi).to_s,2)
     self.contents.draw_text(20,215,115,20,required(actor.agi-bonus_agi).to_s,2)
   end

  if LayoutMode == 2
  self.contents.font.color = Color.new(155,199,206,255)
  self.contents.font.size = Fontsize-6
  if weapon
  self.contents.draw_text(185+@exo2,140+OFFSET+@eyo,100,20,Vocab::atk+"+"+weapon.atk.to_s)
  self.contents.draw_text(185+@exo2,150+OFFSET+@eyo,100,20,Vocab::def+"+"+weapon.def.to_s)
  self.contents.draw_text(253+@exo2,140+OFFSET+@eyo,100,20,Vocab::spi+"+"+weapon.spi.to_s)
  self.contents.draw_text(253+@exo2,150+OFFSET+@eyo,100,20,Vocab::agi+"+"+weapon.agi.to_s)
  end

  if shield
  self.contents.draw_text(185+@exo2,180+OFFSET+@eyo,100,20,Vocab::atk+"+"+shield.atk.to_s)
  self.contents.draw_text(185+@exo2,190+OFFSET+@eyo,100,20,Vocab::def+"+"+shield.def.to_s)
  self.contents.draw_text(253+@exo2,180+OFFSET+@eyo,100,20,Vocab::spi+"+"+shield.spi.to_s)
  self.contents.draw_text(253+@exo2,190+OFFSET+@eyo,100,20,Vocab::agi+"+"+shield.agi.to_s)
  end
 
  if helm
  self.contents.draw_text(185+@exo2,220+OFFSET+@eyo,100,20,Vocab::atk+"+"+helm.atk.to_s)
  self.contents.draw_text(185+@exo2,230+OFFSET+@eyo,100,20,Vocab::def+"+"+helm.def.to_s)
  self.contents.draw_text(253+@exo2,220+OFFSET+@eyo,100,20,Vocab::spi+"+"+helm.spi.to_s)
  self.contents.draw_text(253+@exo2,230+OFFSET+@eyo,100,20,Vocab::agi+"+"+helm.agi.to_s)
  end
 
  if body
  self.contents.draw_text(185+@exo2,260+OFFSET+@eyo,100,20,Vocab::atk+"+"+body.atk.to_s)
  self.contents.draw_text(185+@exo2,270+OFFSET+@eyo,100,20,Vocab::def+"+"+body.def.to_s)
  self.contents.draw_text(253+@exo2,260+OFFSET+@eyo,100,20,Vocab::spi+"+"+body.spi.to_s)
  self.contents.draw_text(253+@exo2,270+OFFSET+@eyo,100,20,Vocab::agi+"+"+body.agi.to_s)
  end
 
  if accessory
  self.contents.draw_text(185+@exo2,300+OFFSET+@eyo,100,20,Vocab::atk+"+"+accessory.atk.to_s)
  self.contents.draw_text(185+@exo2,310+OFFSET+@eyo,100,20,Vocab::def+"+"+accessory.def.to_s)
  self.contents.draw_text(253+@exo2,300+OFFSET+@eyo,100,20,Vocab::spi+"+"+accessory.spi.to_s)
  self.contents.draw_text(253+@exo2,310+OFFSET+@eyo,100,20,Vocab::agi+"+"+accessory.agi.to_s)
  end
  end
end

  def required(base)
   return (((base-1)/10)+2).floor
  end
 
end

#==============================================================================
# ** Lettuce_Window_Help
#------------------------------------------------------------------------------
#  This window displays property of each attribute
#==============================================================================
class Lettuce_Window_Help < Window_Base
  def initialize(index)
   super(401,372,144,44)
   self.contents = Bitmap.new(width-32,height-32)
   self.contents.font.size = Fontsize-4
   refresh(index)
  end
 
  def refresh(index)
   self.contents.clear
  self.contents.font.color = text_color(16)

    case index
    when 0
      self.contents.draw_text(0,-5,112,20,"HP + "+HPIncreaseBy.to_s)
    when 1
      self.contents.draw_text(0,-5,112,20,"MP + "+MPIncreaseBy.to_s)
    when 2
      self.contents.draw_text(0,-5,112,20,Vocab::atk+" + "+IncreaseBy.to_s)
    when 3
      self.contents.draw_text(0,-5,112,20,Vocab::def+" + "+IncreaseBy.to_s)
    when 4
      self.contents.draw_text(0,-5,112,20,Vocab::spi+" + "+IncreaseBy.to_s)
    when 5
      self.contents.draw_text(0,-5,112,20,Vocab::agi+" + "+IncreaseBy.to_s)
    when 6
      self.contents.draw_text(0,-5,112,20,"HIT + "+HITIncreaseBy.to_s)
    when 7
      self.contents.draw_text(0,-5,112,20,"EVA + "+EVAIncreaseBy.to_s)
    when 8
      self.contents.draw_text(0,-5,112,20,"CRIT + "+CRITIncreaseBy.to_s)
    end

 
  end
 
end
 

#==============================================================================
# ** Scene_Stat_Dist
#------------------------------------------------------------------------------
#  Performs stat distribution process :)
#==============================================================================
class Scene_Stat_Dist < Scene_Base
  def initialize(menu_index)
   @menu_index = menu_index
  end
 
  def start
   super
   create_menu_background
  ihp = "  Stamina"
  imp = "  Intellect"
   i1 = "  Attack Power"
   i2 = "  Defense"
   i3 = "  Spell Power"
   i4 = "  Agility"
  i5 = "  Accuracy"
  i6 = "  Evasion"
  i7 = "  Critical Hit"
   @window_select = Window_Command.new(144,[ihp,imp,i1,i2,i3,i4,i5,i6,i7])
   if $position
     @window_select.index = $position - 1
   else
     @window_select.index = 0
   end
   
   @window_select.active = true
   @window_select.x = 401
   @window_select.y = 71
   
   @window_top = Lettuce_Window_Top.new
   @window_points = Lettuce_Window_Points.new(@menu_index)
   @window_info = Lettuce_Window_Info.new(@menu_index)
   @window_help = Lettuce_Window_Help.new(@window_select.index)
  end
   
  def terminate
   super
   dispose_menu_background
   @window_top.dispose
   @window_points.dispose
   @window_info.dispose
   @window_help.dispose
   @window_select.dispose
  end
 
  def update
   update_menu_background
   #@window_points.refresh(@menu_index)
 
   @window_select.update
   #@window_help.refresh(@window_select.index)
  if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
    @window_help.refresh(@window_select.index)
  end
 
   @changes = 0
   if Input.trigger?(Input::B)
     Sound.play_cancel
     $scene = Scene_Map.new
   elsif Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
     @menu_index += 1
     @menu_index %= $game_party.members.size
     $scene = Scene_Stat_Dist.new(@menu_index)
   elsif Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
     @menu_index += $game_party.members.size - 1
     @menu_index %= $game_party.members.size
     $scene = Scene_Stat_Dist.new(@menu_index)
   elsif Input.trigger?(Input::C)
     #Points addition begins
     #which attribute
     if Mode == 1
      do_point_reg
     elsif Mode == 2
      do_point_rag
     end
   end 

  end
 
  def do_point_reg
   @att = @window_select.index
 
  actor = $game_party.members[@menu_index]
 
##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
 
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
 
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
  end
 
     case @att
   
    when 0 #HP
      if actor.points < PointsPerHP
        Sound.play_cancel
      elsif actor.maxhp >= MaxHP
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].maxhp += HPIncreaseBy
      if $game_party.members[@menu_index].maxhp > MaxHP
        $game_party.members[@menu_index].maxhp = MaxHP
      end
        actor.points -= PointsPerHP
        @changes += 1
      $position = 1
      end
   
    when 1 #MP
      if actor.points < PointsPerMP
        Sound.play_cancel
      elsif actor.maxmp >= MaxMP
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].maxmp += MPIncreaseBy
      if $game_party.members[@menu_index].maxmp > MaxMP
        $game_party.members[@menu_index].maxmp = MaxMP
      end
        actor.points -= PointsPerMP
        @changes += 1
      $position = 1
      end
   
     when 2 #ATK
      if actor.points < 1
        Sound.play_cancel
      elsif (actor.atk-bonus_atk) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].atk += IncreaseBy
      if ($game_party.members[@menu_index].atk-bonus_atk) > MaxStat
        $game_party.members[@menu_index].atk = MaxStat+bonus_atk
      end
        actor.points -= 1
        @changes += 1
      $position = 1
      end
      
     when 3 #DEF
      if actor.points < 1
        Sound.play_cancel
      elsif (actor.def-bonus_def) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].def += IncreaseBy
      if ($game_party.members[@menu_index].def-bonus_def) > MaxStat
        $game_party.members[@menu_index].def = MaxStat+bonus_def
      end
        actor.points -= 1
        @changes += 1
      $position = 2
      end
      
     when 4 #SPI
      if actor.points < 1
        Sound.play_cancel
      elsif (actor.spi-bonus_spi) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].spi += IncreaseBy
      if ($game_party.members[@menu_index].spi-bonus_spi) > MaxStat
        $game_party.members[@menu_index].spi = MaxStat+bonus_spi
      end
        actor.points -= 1
        @changes += 1
      $position = 3
      end
     when 5 #AGI
      if actor.points < 1
        Sound.play_cancel
      elsif (actor.agi-bonus_agi) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].agi += IncreaseBy
      if ($game_party.members[@menu_index].agi-bonus_agi) > MaxStat
        $game_party.members[@menu_index].agi = MaxStat+bonus_agi
      end
        actor.points -= 1
        @changes += 1
      $position = 4
      end
    
    
    when 6 #HIT
      if actor.points < PointsPerHIT
        Sound.play_cancel
      elsif actor.hitr >= MaxHIT
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].hitr += HITIncreaseBy
      if $game_party.members[@menu_index].hitr > MaxHIT
        $game_party.members[@menu_index].hitr = MaxHIT
      end
        actor.points -= PointsPerHIT
        @changes += 1
      $position = 1
      end
    when 7 #EVA
      if actor.points < PointsPerEVA
        Sound.play_cancel
      elsif actor.evar >= MaxEVA
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].evar += EVAIncreaseBy
      if $game_party.members[@menu_index].evar > MaxEVA
        $game_party.members[@menu_index].evar = MaxEVA
      end
        actor.points -= PointsPerEVA
        @changes += 1
      $position = 1
      end
    when 8 #CRIT
      if actor.points < PointsPerCRIT
        Sound.play_cancel
      elsif actor.crir >= MaxCRIT
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].crir += CRITIncreaseBy
      if $game_party.members[@menu_index].crir > MaxCRIT
        $game_party.members[@menu_index].crir = MaxCRIT
      end
        actor.points -= PointsPerCRIT
        @changes += 1
      $position = 1
      end
  end
 
  if @changes > 0
      @window_info.refresh(@menu_index)
      @window_points.refresh(@menu_index)
        #$scene = Scene_Stat_Dist.new(@menu_index)
     end
  end
 
  def do_point_rag
   @att = @window_select.index
 
  actor = $game_party.members[@menu_index]
 
##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
 
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
 
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
  end
 
     case @att
   
    when 0 #HP
      if actor.points < PointsPerHP
        Sound.play_cancel
      elsif actor.maxhp >= MaxHP
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].maxhp += HPIncreaseBy
      if $game_party.members[@menu_index].maxhp > MaxHP
        $game_party.members[@menu_index].maxhp = MaxHP
      end
        actor.points -= PointsPerHP
        @changes += 1
      $position = 1
      end
   
    when 1 #MP
      if actor.points < PointsPerMP
        Sound.play_cancel
      elsif actor.maxmp >= MaxMP
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].maxmp += MPIncreaseBy
      if $game_party.members[@menu_index].maxmp > MaxMP
        $game_party.members[@menu_index].maxmp = MaxMP
      end
        actor.points -= PointsPerMP
        @changes += 1
      $position = 1
      end
   
     when 2 #ATK
      base_value = actor.atk-bonus_atk
      points = actor.points
      if enough_point(base_value,points)
        Sound.play_cancel
      elsif (actor.atk-bonus_atk) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].atk += IncreaseBy
      if ($game_party.members[@menu_index].atk-bonus_atk) > MaxStat
        $game_party.members[@menu_index].atk = MaxStat+bonus_atk
      end
        actor.points -= required(base_value)
        @changes += 1
        $position = 1
      end
      
     when 3 #DEF
      base_value = actor.def-bonus_def
      points = actor.points
      if enough_point(base_value,points)
        Sound.play_cancel
      elsif (actor.def-bonus_def) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].def += IncreaseBy
      if ($game_party.members[@menu_index].def-bonus_def) > MaxStat
        $game_party.members[@menu_index].def = MaxStat+bonus_def
      end
        actor.points -= required(base_value)
        @changes += 1
        $position = 2
      end
      
     when 4 #SPI
      base_value = actor.spi-bonus_spi
      points = actor.points
      if enough_point(base_value,points)
        Sound.play_cancel
      elsif (actor.spi-bonus_spi) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].spi += IncreaseBy
      if ($game_party.members[@menu_index].spi-bonus_spi) > MaxStat
        $game_party.members[@menu_index].spi = MaxStat+bonus_spi
      end
        actor.points -= required(base_value)
        @changes += 1
        $position = 3
      end
     when 5 #AGI
      base_value = actor.agi-bonus_agi
      points = actor.points
      if enough_point(base_value,points)
        Sound.play_cancel
      elsif (actor.agi-bonus_agi) >= MaxStat
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].agi += IncreaseBy
      if ($game_party.members[@menu_index].agi-bonus_agi) > MaxStat
        $game_party.members[@menu_index].agi = MaxStat+bonus_agi
      end
        actor.points -= required(base_value)
        @changes += 1
        $position = 4
      end
    when 6 #HIT
      if actor.points < PointsPerHIT
        Sound.play_cancel
      elsif actor.hitr >= MaxHIT
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].hitr += HITIncreaseBy
      if $game_party.members[@menu_index].hitr > MaxHIT
        $game_party.members[@menu_index].hitr = MaxHIT
      end
        actor.points -= PointsPerHIT
        @changes += 1
      $position = 1
      end
    when 7 #EVA
      if actor.points < PointsPerEVA
        Sound.play_cancel
      elsif actor.evar >= MaxEVA
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].evar += EVAIncreaseBy
      if $game_party.members[@menu_index].evar > MaxEVA
        $game_party.members[@menu_index].evar = MaxEVA
      end
        actor.points -= PointsPerEVA
        @changes += 1
      $position = 1
      end
    when 8 #CRIT
      if actor.points < PointsPerCRIT
        Sound.play_cancel
      elsif actor.crir >= MaxCRIT
        Sound.play_cancel
      else
      Sound.play_use_item
        $game_party.members[@menu_index].crir += CRITIncreaseBy
      if $game_party.members[@menu_index].crir > MaxCRIT
        $game_party.members[@menu_index].crir = MaxCRIT
      end
        actor.points -= PointsPerCRIT
        @changes += 1
      $position = 1
      end
     end
     if @changes > 0
      @window_points.refresh(@menu_index)
      @window_info.refresh(@menu_index)
      #$scene = Scene_Stat_Dist.new(@menu_index)
     end
  end
 
  def enough_point(base,points)
   required = (((base-1)/10)+2).floor
   if required > points
     return true
   elsif required <= points
     return false
   end
  end
 
  def required(base)
   return (((base-1)/10)+2).floor
  end
 
end


#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  Giving game actor a point attribute
#  -> $game_party.member
  • .points

#==============================================================================

class Game_Actor < Game_Battler

  attr_accessor :points
  attr_accessor :hit_bonus
  attr_accessor :eva_bonus
  attr_accessor :cri_bonus
  attr_accessor :hitr
  attr_accessor :evar
  attr_accessor :crir
  #attr_accessor :current_lvl_exp
  #attr_accessor :next_lvl_exp
  alias Lettuce_Game_Actor_Ini initialize
 
  def initialize(actor_id)
    Lettuce_Game_Actor_Ini(actor_id)
     @points = StartPoints
     @hitr = 0
     @evar = 0
     @crir = 0
     #@current_lvl_exp = @exp_list[@level-1]
     #@next_lvl_exp = @exp_list[@level]
  end

  def points
     return @points
  end
 
  #--------------------------------------------------------------------------
  # * Get Hit Rate
  #--------------------------------------------------------------------------
  def hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
    if n+@hitr <= MaxHIT
    return n+@hitr
  else return MaxHIT
    end
  end
  #--------------------------------------------------------------------------
  # * Get Evasion Rate
  #--------------------------------------------------------------------------
  def eva
    n = 5
    for item in armors.compact do n += item.eva end
    if n+@evar <= MaxEVA
     return n+@evar
   else return MaxEVA
     end
  end
  #--------------------------------------------------------------------------
  # * Get Critical Ratio
  #--------------------------------------------------------------------------
  def cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
    if n+@crir <= MaxCRIT
      return n+@crir
    else return MaxCRIT
      end
  end
 
 #--------------------------------------------------------------------------
  # * Get Hit Rate
  #--------------------------------------------------------------------------
  def base_hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
    return n
  end
  #--------------------------------------------------------------------------
  # * Get Evasion Rate
  #--------------------------------------------------------------------------
  def base_eva
    n = 5
    for item in armors.compact do n += item.eva end
    return n
  end
  #--------------------------------------------------------------------------
  # * Get Critical Ratio
  #--------------------------------------------------------------------------
  def base_cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
    return n
  end
 
 
  #--------------------------------------------------------------------------
  # * bonus rates
  #--------------------------------------------------------------------------   
  def hitr
    return @hitr
  end
 
  def evar
    return @evar
  end
 
  def crir
    return @crir
  end
   
   
 
  def current_lvl_exp
    return @exp_list[@level]
  end
 
  def next_lvl_exp
    return @exp_list[@level+1]-@exp_list[@level]
  end
end

Ich weiß nicht ob es das ist was du suchst, aber damit geht das. Wie in MMORPG's wenn man LVL up wird, kann man seine Punkte verteilen und somit seine Attribute erhöhen^^.

mfG
 

[imghttp://www.muskelschmiede.de/forum/images/smilies/bbler.gif[/img]http://

[url=http://www.rpgvx.net/

Re: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen

Offline Herendil

  • Jarl Turindo
  • Moderator
  • Mr. MACK-Tile
  • ***
  • Beiträge: 283
  • Jarl Turindo
Re: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen
« Antwort #3 am: Januar 08, 2011, 13:31:11 »
Also, in Game_Battler werden critische Treffer so definiert:

      @critical = (rand(100) < attacker.cri)        # critical hit?
      @critical = false if prevent_critical         # criticals prevented?
      damage *= 3 if @critical                      # critical adjustment

Die besagte Methode ist in Game_Actor so definiert:

    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
        n += 4 if weapon.critical_bonus
    end
    return n

Das heißt also: Du hast grundsätzlich als Actor eine 4% Chance auf einen Criticalhit, der den Schaden verdreifacht. Hast du den Haken im Actor-Fenster in der Database für "Critical-Bonus" an, sind es acht Prozent. Hast du dann noch eine Waffe, die diesen Haken hat, sind es weitere vier Prozent.

Was genau soll da "genauer" werden?

Re: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen

Offline Syforc

  • Ich press die Frucht, brauch kein Messer junge
  • Mr. MACK-Tile
  • ***
  • Beiträge: 221
    • http://www.youtube.com/watch?v=VrdwhXNt4qw
Re: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen
« Antwort #4 am: Januar 08, 2011, 13:50:23 »
Ja also erhöht AGI die Krit.Chance nicht? Ansonsten benutzt das Script von Lettuce das ist immernoch am leichtesten^^.

mfG
 

[imghttp://www.muskelschmiede.de/forum/images/smilies/bbler.gif[/img]http://

[url=http://www.rpgvx.net/

Re: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen

Offline DimiFW

  • Database-Verunstalter
  • **
  • Beiträge: 102
    • Freewar
Re: "Critical Hit" Häufigkeit und Zusatzschaden genau anpassen
« Antwort #5 am: Januar 09, 2011, 13:42:14 »
Also, in Game_Battler werden critische Treffer so definiert:

      @critical = (rand(100) < attacker.cri)        # critical hit?
      @critical = false if prevent_critical         # criticals prevented?
      damage *= 3 if @critical                      # critical adjustment

Die besagte Methode ist in Game_Actor so definiert:

    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
        n += 4 if weapon.critical_bonus
    end
    return n

Das heißt also: Du hast grundsätzlich als Actor eine 4% Chance auf einen Criticalhit, der den Schaden verdreifacht. Hast du den Haken im Actor-Fenster in der Database für "Critical-Bonus" an, sind es acht Prozent. Hast du dann noch eine Waffe, die diesen Haken hat, sind es weitere vier Prozent.

Was genau soll da "genauer" werden?

genau das war die stelle die ich wissen wollte, perfekt, da kann man ja gut dran rumprobieren. danke dir ^^

 


 Bild des Monats

rooftop party

Views: 3615
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