XP 스크립트

출처:네이버 {RPG만들기 포럼} 카페


#LV 한계 돌파
#
#처음에 거절하고 일어나시면 ,이 스크립트(script)를 사용한 것보다도
#자력으로 개조한 쪽이 ,다양 자유롭게 가능하다 하여 권장입니다.
#이기 때문에 ,참고 정도에 보여 줄 수 있는다면 좋을지도 모릅니다.
#( 물론,이것 단체라도 움직이도록 만들고 있으므로
#그대로 사용하고 받아도 상관하지 않습니다.)
#
#그대로 사용한 경우의 주의점으로서 ,
#지금까지의 스크립트(script)와 달리,기초로부터 있는 처리를 몇개인가 개서하고 입니다.
#병용이라든가 한 경우,가능한한 위의 쪽에 부착하면 그럭 저럭 되다,카모시れ 늘릴 수 없다.
#
#사용 방법
#먼저,데이터베이스(database)의 배우(actor) 설정으로 패러미터(parameter)의 설정을 합니다.
#각 패러미터(parameter)는 초기치 + 기본 치 * LV 로 산출됩니다.
#배우(actor)의 LV1의 때의 패러미터(parameter)의 값이 초기치
#LV2의 때의 값이 기본 값입니다.
#가사 HP의 초기치가 1500,기본치가 150과 자태라면,
#데이터베이스(database)의 배우(actor)의 패러미터(parameter) 설정으로
#LV1의 때의 HP가 1500,LV2의 때의 HP가 150으로 되도록 설정하십시오.
#
#패러미터(parameter)의 산출이 적당 지나기 때문에 ,각자 수정이 필요나와 .

  BASE_FINAL_LEVEL = 9999  #상한 레벨(level)(그다지 큰 값을 설정한다면 항 합니다)
  MAXHP_LIMIT = 99999999    #HP 한계 치
  MAXSP_LIMIT = 99999999    #SP 한계 치
  STR_LIMIT  = 999999      #STR 한계 치
  DEX_LIMIT  = 999999      #DEX 한계 치
  AGI_LIMIT  = 999999      #AGI 한계 치
  INT_LIMIT  = 999999      #INT 한계 치

class Game_Actor < Game_Battler
  def new_final_level
    lv = BASE_FINAL_LEVEL
    #이하 상한 LV 개별 지정 용
    #case self.id #엑터의 ID 번호에 따라 레벨 한계치를 각자 개별로 바꿔줄 수 있습니다.
    #when 1
    #  lv = 255
    #when 2
    #  lv = 999
    #when 8
    #  lv = 15600
    #end
    return lv
  end
  #--------------------------------------------------------------------------
  # ● EXP 계산
  #--------------------------------------------------------------------------
  def make_exp_list
    actor = $data_actors[@actor_id]
    @exp_list = Array.new(new_final_level + 2)
    @exp_list[1] = 0
    pow_i = 2.4 + actor.exp_inflation / 100.0
    for i in 2..new_final_level + 1
      if i > new_final_level
        @exp_list[i] = 0
      else
        n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
        @exp_list[i] = @exp_list[i-1] + Integer(n)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● MaxHP 의(것) 취득
  #--------------------------------------------------------------------------
  def maxhp
    n = [[base_maxhp + @maxhp_plus, 1].max, MAXHP_LIMIT].min
    for i in @states
      n *= $data_states[i].maxhp_rate / 100.0
    end
    n = [[Integer(n), 1].max, MAXHP_LIMIT].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 기본 MaxHP 의(것) 취득
  #--------------------------------------------------------------------------
  def base_maxhp
    n = $data_actors[@actor_id].parameters[0, 1]
    n += $data_actors[@actor_id].parameters[0, 2] * @level
    return n
  end
  #--------------------------------------------------------------------------
  # ● 기본 MaxSP 의(것) 취득
  #--------------------------------------------------------------------------
  def base_maxsp
    n = $data_actors[@actor_id].parameters[1, 1]
    n += $data_actors[@actor_id].parameters[1, 2] * @level
    return n
  end
  #--------------------------------------------------------------------------
  # ● 기본 완력의 취득
  #--------------------------------------------------------------------------
  def base_str
    n = $data_actors[@actor_id].parameters[2, 1]
    n += $data_actors[@actor_id].parameters[2, 2] * @level
    weapon = $data_weapons[@weapon_id]
    armor1 = $data_armors[@armor1_id]
    armor2 = $data_armors[@armor2_id]
    armor3 = $data_armors[@armor3_id]
    armor4 = $data_armors[@armor4_id]
    n += weapon != nil ? weapon.str_plus : 0
    n += armor1 != nil ? armor1.str_plus : 0
    n += armor2 != nil ? armor2.str_plus : 0
    n += armor3 != nil ? armor3.str_plus : 0
    n += armor4 != nil ? armor4.str_plus : 0
    return [[n, 1].max, STR_LIMIT].min
  end
  #--------------------------------------------------------------------------
  # ● 기본 손재주가 사노 취득
  #--------------------------------------------------------------------------
  def base_dex
    n = $data_actors[@actor_id].parameters[3, 1]
    n += $data_actors[@actor_id].parameters[3, 2] * @level
    weapon = $data_weapons[@weapon_id]
    armor1 = $data_armors[@armor1_id]
    armor2 = $data_armors[@armor2_id]
    armor3 = $data_armors[@armor3_id]
    armor4 = $data_armors[@armor4_id]
    n += weapon != nil ? weapon.dex_plus : 0
    n += armor1 != nil ? armor1.dex_plus : 0
    n += armor2 != nil ? armor2.dex_plus : 0
    n += armor3 != nil ? armor3.dex_plus : 0
    n += armor4 != nil ? armor4.dex_plus : 0
    return [[n, 1].max, DEX_LIMIT].min
  end
  #--------------------------------------------------------------------------
  # ● 기본 신속함의 취득
  #--------------------------------------------------------------------------
  def base_agi
    n = $data_actors[@actor_id].parameters[4, 1]
    n += $data_actors[@actor_id].parameters[4, 2] * @level
    weapon = $data_weapons[@weapon_id]
    armor1 = $data_armors[@armor1_id]
    armor2 = $data_armors[@armor2_id]
    armor3 = $data_armors[@armor3_id]
    armor4 = $data_armors[@armor4_id]
    n += weapon != nil ? weapon.agi_plus : 0
    n += armor1 != nil ? armor1.agi_plus : 0
    n += armor2 != nil ? armor2.agi_plus : 0
    n += armor3 != nil ? armor3.agi_plus : 0
    n += armor4 != nil ? armor4.agi_plus : 0
    return [[n, 1].max, AGI_LIMIT].min
  end
  #--------------------------------------------------------------------------
  # ● 기본 마력의 취득
  #--------------------------------------------------------------------------
  def base_int
    n = $data_actors[@actor_id].parameters[5, 1]
    n += $data_actors[@actor_id].parameters[5, 2] * @level
    weapon = $data_weapons[@weapon_id]
    armor1 = $data_armors[@armor1_id]
    armor2 = $data_armors[@armor2_id]
    armor3 = $data_armors[@armor3_id]
    armor4 = $data_armors[@armor4_id]
    n += weapon != nil ? weapon.int_plus : 0
    n += armor1 != nil ? armor1.int_plus : 0
    n += armor2 != nil ? armor2.int_plus : 0
    n += armor3 != nil ? armor3.int_plus : 0
    n += armor4 != nil ? armor4.int_plus : 0
    return [[n, 1].max, INT_LIMIT].min
  end
  #--------------------------------------------------------------------------
  # ● EXP 의(것) 변경
  #    exp : 새롭다 EXP
  #--------------------------------------------------------------------------
  def exp=(exp)
    # ★EXP의 상한 체크(check)를 해제
    @exp = [exp, 0].max
    # 레벨업(level up)
    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
      @level += 1
      # 숙련(skill) 습득
      for j in $data_classes[@class_id].learnings
        if j.level == @level
          learn_skill(j.skill_id)
        end
      end
    end
    # 레벨(level) 다운(down)
    while @exp < @exp_list[@level]
      @level -= 1
    end
    # 현재의 HP 라고(와) SP 이(가) 최대치를 초과하고 있다면 수정
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end
  #--------------------------------------------------------------------------
  # ● 레벨(level)의 변경
  #    level : 새로운 레벨(level)
  #--------------------------------------------------------------------------
  def level=(level)
    # 상하한 체크(check)
    # ★LV 상한을 new_final_level로 체크(check)하도록 변경
    level = [[level, new_final_level].min, 1].max
    # EXP 을(를) 변경
    self.exp = @exp_list[level]
  end
end
 
 
class Game_Battler
  #--------------------------------------------------------------------------
  # ● MaxSP 의(것) 취득
  #--------------------------------------------------------------------------
  def maxsp
    n = [[base_maxsp + @maxsp_plus, 0].max, MAXSP_LIMIT].min
    for i in @states
      n *= $data_states[i].maxsp_rate / 100.0
    end
    n = [[Integer(n), 0].max, MAXSP_LIMIT].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 완력의 취득
  #--------------------------------------------------------------------------
  def str
    n = [[base_str + @str_plus, 1].max, STR_LIMIT].min
    for i in @states
      n *= $data_states[i].str_rate / 100.0
    end
    n = [[Integer(n), 1].max, STR_LIMIT].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 손재주가 사노 취득
  #--------------------------------------------------------------------------
  def dex
    n = [[base_dex + @dex_plus, 1].max, DEX_LIMIT].min
    for i in @states
      n *= $data_states[i].dex_rate / 100.0
    end
    n = [[Integer(n), 1].max, DEX_LIMIT].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 신속함의 취득
  #--------------------------------------------------------------------------
  def agi
    n = [[base_agi + @agi_plus, 1].max, AGI_LIMIT].min
    for i in @states
      n *= $data_states[i].agi_rate / 100.0
    end
    n = [[Integer(n), 1].max, AGI_LIMIT].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 마력의 취득
  #--------------------------------------------------------------------------
  def int
    n = [[base_int + @int_plus, 1].max, INT_LIMIT].min
    for i in @states
      n *= $data_states[i].int_rate / 100.0
    end
    n = [[Integer(n), 1].max, INT_LIMIT].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● MaxHP 의(것) 설정
  #    maxhp : 새롭다 MaxHP
  #--------------------------------------------------------------------------
  def maxhp=(maxhp)
    @maxhp_plus += maxhp - self.maxhp
    @maxhp_plus = [[@maxhp_plus, -MAXHP_LIMIT].max, MAXHP_LIMIT].min
    @hp = [@hp, self.maxhp].min
  end
  #--------------------------------------------------------------------------
  # ● MaxSP 의(것) 설정
  #    maxsp : 새롭다 MaxSP
  #--------------------------------------------------------------------------
  def maxsp=(maxsp)
    @maxsp_plus += maxsp - self.maxsp
    @maxsp_plus = [[@maxsp_plus, -MAXSP_LIMIT].max, MAXSP_LIMIT].min
    @sp = [@sp, self.maxsp].min
  end
  #--------------------------------------------------------------------------
  # ● 완력의 설정
  #    str : 새로운 완력
  #--------------------------------------------------------------------------
  def str=(str)
    @str_plus += str - self.str
    @str_plus = [[@str_plus, -STR_LIMIT].max, STR_LIMIT].min
  end
  #--------------------------------------------------------------------------
  # ● 손재주가 사노 설정
  #    dex : 새로운 손재주가
  #--------------------------------------------------------------------------
  def dex=(dex)
    @dex_plus += dex - self.dex
    @dex_plus = [[@dex_plus, -DEX_LIMIT].max, DEX_LIMIT].min
  end
  #--------------------------------------------------------------------------
  # ● 신속함의 설정
  #    agi : 새로운 신속함
  #--------------------------------------------------------------------------
  def agi=(agi)
    @agi_plus += agi - self.agi
    @agi_plus = [[@agi_plus, -AGI_LIMIT].max, AGI_LIMIT].min
  end
  #--------------------------------------------------------------------------
  # ● 마력의 설정
  #    int : 새로운 마력
  #--------------------------------------------------------------------------
  def int=(int)
    @int_plus += int - self.int
    @int_plus = [[@int_plus, -INT_LIMIT].max, INT_LIMIT].min
  end
end

Who's 백호

?

이상혁입니다.

http://elab.kr

Comment '3'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6159
114 기타 어디에 쓰이는지 불확실한 스크립트 1 백호 2009.02.22 1063
113 기타 일본RPGXP게임에서 번역한 스크립트 입니다. 1 백호 2009.02.22 1735
112 기타 대화창 글자 한글자씩뜨는 스크립트 7 백호 2009.02.22 2185
111 기타 치트키 시스템 3 백호 2009.02.22 1594
110 기타 Crafting/Recipe system script by Axe Man Deke 백호 2009.02.22 829
109 기타 (T-RPG) 데미지 표시 시의 폰트를 설정 백호 2009.02.22 1348
108 기타 스테이터스 표시 플러스 1.00ver 백호 2009.02.22 1141
107 기타 메세지를 분출해 표시 백호 2009.02.22 1169
106 기타 레벨업시 전회복 by ccoa 8 백호 2009.02.22 2514
105 기타 Book Event v2 by Bruth 5 백호 2009.02.22 1694
104 기타 레벨, 능력치 무한 스크립트 3 백호 2009.02.22 1712
103 기타 광물캐기 스크립트 1 file 백호 2009.02.22 1850
102 기타 Defining Encounter Areas by RPG Advocate (사용법 첨부) file 백호 2009.02.22 1201
101 기타 풀스크린 스크립트 2 백호 2009.02.22 1407
100 기타 스크립트 자료 3 file 백호 2009.02.22 905
99 기타 Selected phyolomortis.com scripts 1 file 백호 2009.02.22 789
98 기타 창고 시스템 8 백호 2009.02.22 1763
97 기타 ID띄우기 스크립트(新) 3 백호 2009.02.22 1280
96 기타 제작한 게임의 파일을 모두 exe파일 하나에 쓸어담기 by sheefo@Creation Asylum 1 file 백호 2009.02.22 1239
95 기타 파노라마 스크롤 스크립트 개량판 by Guillaume777 1 백호 2009.02.22 896
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 Next
/ 13