================================================================================================
게임공작소의 키스코님이 올려주신 콤보 스크립트 입니다.
중복이라면 할말없지만..;;
#지금 이 글부터 맨 아랫쪽의 끝까지 드레그해서 복사 하세요~!!
# Originally released by: momomo?
# Removal of comments and fix: Matte
#
# Look at line 221 for more info
module Combo_Skill_Config
COMBO_BONUS = 25
ALL_ATTCK_SKILL_MAX = 1
COMBO_ANIME_ID = 5
BASE_BEFORE_REVISION = 15
BASE_AFTER_REVISION = 15
SHOW_DAMAGE_LUMP = true
COMBO_NAME_SHOW = true
COMBO_NAME_SPLIT = 3
end
class Scene_Battle
include Combo_Skill_Config
#--------------------------------------------------------------------------
alias scene_battle_skill_combo_start_phase4 start_phase4
def start_phase4
@combo_on = false
@combo_bese_target = nil
@combo_finish = false
@combo_count = 0
@combo_name = ""
scene_battle_skill_combo_start_phase4
end
#--------------------------------------------------------------------------
alias scene_battle_skill_combo_update_phase4 update_phase4
def update_phase4
if @combo_effect_start
update_phase4_combo_effect
return
end
scene_battle_skill_combo_update_phase4
end
#--------------------------------------------------------------------------
alias scene_battle_skill_combo_update_phase4_step2 update_phase4_step2
def update_phase4_step2
unless @active_battler.current_action.forcing
if @active_battler.restriction == 2 or @active_battler.restriction == 3
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
end
if @active_battler.restriction == 4
$game_temp.forcing_battler = nil
@phase4_step = 1
return
end
end
if @action_battlers.size != 0 and @combo_on == false
if combo_ok?(@active_battler)
@combo_skill = []
@combo_skill.push(@active_battler.current_action.skill_id)
@combo_member = []
@combo_member.push(@active_battler)
last_battler = @active_battler
for i in 0...@action_battlers.size
next_battler = @action_battlers[i]
break if combo_ok?(next_battler) == false
break if combo_probability(last_battler, next_battler) == false
next_battler.combo_number = i + 2
@combo_skill.push(next_battler.current_action.skill_id)
@combo_member.push(next_battler)
last_battler = @action_battlers[i]
end
@combo_max = @combo_member.size
if @combo_max > 1
@combo_count = 0
@active_battler.combo_number = 1
@combo_on = true
@combo_effect = true
else
@combo_bese_target = nil
@combo_all_target_count = 0
@combo_on = false
end
end
end
if @combo_effect
@combo_effect_start = true
end
scene_battle_skill_combo_update_phase4_step2
end
#--------------------------------------------------------------------------
alias scene_battle_skill_combo_make_skill_action_result make_skill_action_result
def make_skill_action_result
scene_battle_skill_combo_make_skill_action_result
if @combo_on
@active_battler.combo_number = nil
@combo_count += 1
if @combo_count >= @combo_max
@combo_finish = true
end
if COMBO_NAME_SHOW
c_name = get_combo_skill_name(@skill)
if @combo_finish
@combo_name += c_name[1]
@help_window.set_text(@combo_name, 1)
@help_window.visible = true
else
@combo_name += c_name[0]
@help_window.visible = false
end
end
end
end
#--------------------------------------------------------------------------
def update_phase4_combo_effect
@active_battler.animation_id = COMBO_ANIME_ID
@active_battler.animation_hit = true
@wait_count = 8
@combo_effect_start = false
@phase4_step = 3
end
#--------------------------------------------------------------------------
alias scene_battle_skill_combo_update_phase4_step5 update_phase4_step5
def update_phase4_step5
scene_battle_skill_combo_update_phase4_step5
if @combo_finish
battler = []
battler += $game_troop.enemies
battler += $game_party.actors
for target in battler
if target.exist?
if SHOW_DAMAGE_LUMP
if target.combo_total_damage != nil
target.damage = target.combo_total_damage
target.damage_pop = true
target.combo_total_damage = nil
end
end
if target.combo_dead
target.hp = 0
target.combo_dead = false
end
end
end
end
end
#--------------------------------------------------------------------------
alias scene_battle_skill_combo_update_phase4_step6 update_phase4_step6
def update_phase4_step6
scene_battle_skill_combo_update_phase4_step6
if @combo_finish
@combo_on = false
@combo_bese_target = nil
@combo_count = 0
@combo_finish = false
@combo_effect = false
@combo_name = ""
end
end
#--------------------------------------------------------------------------
def combo_ok?(actor)
all_attck_skill_max = ALL_ATTCK_SKILL_MAX
if actor.is_a?(Game_Enemy)
return false
end
if actor.current_action.kind != 1
return false
end
unless actor.skill_can_use?(actor.current_action.skill_id)
return false
end
skill = $data_skills[actor.current_action.skill_id]
for i in skill.element_set
if $data_system.elements[i] != nil
if $data_system.elements[i] =~ /combo/
return false
end
end
end
if @combo_bese_target == nil
@combo_all_target_count = 0
if skill.scope == 2
if @combo_all_target_count >= all_attck_skill_max
return false
end
@combo_bese_target = -1
@combo_all_target_count += 1
else
@combo_bese_target = actor.current_action.target_index
end
elsif @combo_bese_target == -1
if skill.scope == 2
if @combo_all_target_count >= all_attck_skill_max
return false
end
@combo_all_target_count += 1
else
@combo_bese_target = actor.current_action.target_index
end
else
if skill.scope == 2
if @combo_all_target_count >= all_attck_skill_max
return false
end
@combo_all_target_count += 1
else
if actor.current_action.target_index != @combo_bese_target
return false
end
end
end
return true
end
#--------------------------------------------------------------------------
def combo_probability(last_battler, next_battler)
s_num = $data_system.switches.index("1")
if s_num != nil
return true
end
last_skill = $data_skills[last_battler.current_action.skill_id]
next_skill = $data_skills[next_battler.current_action.skill_id]
last_n = skill_combo_after_revision(last_skill)
last_n += actor_combo_after_revision(last_battler)
next_n = skill_combo_before_revision(next_skill)
next_n += actor_combo_before_revision(next_battler)
n = last_n + next_n
# Change this next line to whatever you want the propability to be.
# If the number is lower there is a bigger chance for a combo attack.
# And if it's higher there is less chance for a combo
if (rand(100) < n)
return true
end
return false
end
#--------------------------------------------------------------------------
def actor_combo_base_revision(actor)
return 0
end
#--------------------------------------------------------------------------
def actor_combo_before_revision(actor)
n = actor_combo_base_revision(actor)
n += BASE_BEFORE_REVISION
return n
end
#--------------------------------------------------------------------------
def actor_combo_after_revision(actor)
n = actor_combo_base_revision(actor)
n += BASE_AFTER_REVISION
return n
end
#--------------------------------------------------------------------------
def skill_combo_before_revision(skill)
rate = 0
for i in skill.element_set
if $data_system.elements[i] != nil
if $data_system.elements[i] =~ /combo([+-]?[0-9]+)(%|%)/
rate += $1.to_i
end
end
end
return rate
end
#--------------------------------------------------------------------------
def skill_combo_after_revision(skill)
rate = 0
for i in skill.element_set
if $data_system.elements[i] != nil
if $data_system.elements[i] =~ /combo([+-]?[0-9]+)(%|%)/
rate += $1.to_i
end
end
end
return rate
end
#--------------------------------------------------------------------------
def get_combo_skill_name(skill)
name = skill.name.split('')
if name.size == 1
return [name[0], name[0]]
elsif name.size <= COMBO_NAME_SPLIT
tempname = name.join
return [tempname, tempname]
end
num = name.size / 2
name1 = ""
name2 = ""
for i in 0...num
name1 += name[i]
end
for i in num...name.size
name2 += name[i]
end
return [name1, name2]
end
end
class Game_Battler
include Combo_Skill_Config
attr_accessor :combo_number
attr_accessor :combo_dead
attr_accessor :combo_total_damage
#--------------------------------------------------------------------------
alias game_battler_skill_combo_initialize initialize
def initialize
game_battler_skill_combo_initialize
@combo_number = nil
@combo_dead = false
@combo_total_damage = nil
end
#--------------------------------------------------------------------------
alias game_battler_skill_combo_skill_effect skill_effect
def skill_effect(user, skill)
result = game_battler_skill_combo_skill_effect(user, skill)
if user.combo_number != nil
if self.damage.is_a?(Numeric)
combo_rate = user.combo_number * COMBO_BONUS
damage = self.damage * combo_rate / 100
self.damage += damage
self.hp -= damage
if SHOW_DAMAGE_LUMP
@combo_total_damage = 0 if @combo_total_damage == nil
@combo_total_damage += self.damage
self.damage = nil
end
end
if self.dead?
self.combo_dead = true
self.hp = 1
end
end
return result
end
end
#여기가 끝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
콤보시스템 잘 쓰세요~!!
댓글 7
-
아란
2006.08.23 02:21
컥...|+rp2+|2233|+rp3+|acoc_board_ideatip -
아란
2006.08.23 02:21
딴 것보다,
게시판 버그로 인해 생긴,
저 <BR>이...|+rp2+|2234|+rp3+|acoc_board_ideatip -
그노에즈
2006.08.23 03:55
제 눈에도 <br>만 눈에 띄임|+rp2+|2239|+rp3+|acoc_board_ideatip -
Yggdrasil
2006.08.24 03:35
RPG XP 포럼으로 ㄱㄱ|+rp2+|2241|+rp3+|acoc_board_ideatip -
나두rpg재밌게만들고
2006.10.09 04:49
br이 머죠?
|+rp2+|2347|+rp3+|acoc_board_ideatip -
JOMG
2006.10.30 06:09
태그할때쓰는거요.|+rp2+|2379|+rp3+|acoc_board_ideatip -
게임제작자
2007.03.04 06:32
액알도 되나요?
|+rp2+|2826|+rp3+|acoc_board_ideatip
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
309 | 자바 기초 로직 ˙ [2] | dnajs | 2006.09.16 | 540 |
308 | MSN 주소를 알려주세요. [11] | MrGeek | 2006.09.13 | 938 |
307 | MFC 색상표 [1] | 피군 | 2006.09.12 | 352 |
306 | 연산자 종류 / 연산자 및 제어구조 [2] | 연지 | 2006.09.07 | 508 |
305 | 포인터변수. [1] | 연지 | 2006.09.07 | 245 |
304 | 게임에서 마우스로 게임하기 [10] | 브레인 | 2006.09.06 | 2472 |
303 | 게이지바 스크립트 [6] | 브레인 | 2006.09.06 | 4371 |
302 | 미니맵을 만들어 보자 - 스크립트 - [11] | 브레인 | 2006.09.06 | 1922 |
301 | 나의 4차원적 아이디어들.-1- [15] | 시엔 | 2006.09.04 | 707 |
300 | 오늘 개강. [3] | 아란 | 2006.08.29 | 261 |
299 | 턴알에서 뽑기로 공격해보자. [11] | z-z | 2006.08.28 | 589 |
298 | 임시변수 없이 스왑(swap)하기~ [2] | 케이코냥이 | 2006.08.27 | 220 |
297 | 곧 [3] | 초코군 | 2006.08.25 | 203 |
» | 콤보 스크립트 [7] | 귀여븐닌자 | 2006.08.23 | 1624 |
295 | MG F91이 와서... [2] | 아란 | 2006.08.22 | 223 |
294 | 점점 개강이 다가옵니다. [1] | 아란 | 2006.08.21 | 212 |
293 | srpg의 이동 시스템 [6] | 창공의곰팅이 | 2006.08.20 | 735 |
292 | #pragma warning [3] | 피군 | 2006.08.20 | 312 |
291 | 잡담반이 돌아왔습니다-_-;; [3] | 아란 | 2006.08.20 | 213 |
290 | 대입/쉬프트/삼항/cast/콤머/sizeof 연산자 (수정) [4] | 연지 | 2006.08.18 | 291 |