대미지 실드를 만들어 주인공에게 입을 피해를 실드가 대신 입는 것입니다
예)내구력 1000의 대미지 실드가 발동 중인데 2000의 대미지가 들어오면 주인공은 1000의 대미지만
입게 됩니다
예2) 내구력 1000의 대미지 실드가 발동 중인데 500의 대미지가 들어오면 주인공은 피해 입지 않고
대미지 실드 내구력이 500 떨어지게 됩니다
체력이 낮은 법사가 쓰면 좋습니다.
출저는 스크립트에 나와 있습니다
우선 SG Setting Control 스크립트 밑에 삽입 하셔야 합니다.
처음으로 올께
#=============================================================================
# ** SG Oversized Damage
#=============================================================================
# sandgolem
# Version 2
# 25.05.06
#=============================================================================
#
RPG::Sprite::SG_Damage_Size = 46
RPG::Sprite::SG_Text_Size = 32
RPG::Sprite::SG_Crit_Size = 24
$sg_critical_text = 'CRITICAL'
#
#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# Place this under the SDK (optional) if you're using it.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================
#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
begin
SDK.log("SG Oversized Damage", "sandgolem", 2, "25.05.06")
if SDK.state("SG Oversized Damage") != true
@sg_overdamage_disabled = true
end
rescue
end
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if !@sg_overdamage_disabled
module RPG
class Sprite < ::Sprite
def damage(value, critical)
dispose_damage
#------------------------------------------------------------------------------
# Begin SG Oversized Damage edit
#------------------------------------------------------------------------------
bitmap = Bitmap.new(160, 80)
if value.is_a?(Numeric)
damage_string = value.abs.to_s
bitmap.font.size = SG_Damage_Size
else
damage_string = value.to_s
bitmap.font.size = SG_Text_Size
end
bitmap.font.name = "Arial Black"
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(0, 12+2, 160, 36, damage_string, 1)
bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
if value.is_a?(Numeric) and value < 0
bitmap.font.color.set(176, 255, 144)
else
bitmap.font.color.set(255, 255, 255)
end
bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
if critical
bitmap.font.size = SG_Crit_Size
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, -1, 160, 20, $sg_critical_text, 1)
bitmap.draw_text(+1, -1, 160, 20, $sg_critical_text, 1)
bitmap.draw_text(-1, +1, 160, 20, $sg_critical_text, 1)
bitmap.draw_text(+1, +1, 160, 20, $sg_critical_text, 1)
bitmap.font.color.set(255, 255, 255)
bitmap.draw_text(0, 0, 160, 20, $sg_critical_text, 1)
end
#------------------------------------------------------------------------------
# End SG Oversized Damage edit
#------------------------------------------------------------------------------
@_damage_sprite = ::Sprite.new(self.viewport)
@_damage_sprite.bitmap = bitmap
@_damage_sprite.ox = 80
@_damage_sprite.oy = 20
@_damage_sprite.x = self.x
@_damage_sprite.y = self.y - self.oy / 2
@_damage_sprite.z = 3000
@_damage_duration = 40
end
end
end
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
그리고 바로 밑에 이 스크립트를 삽입해 주세요
#=============================================================================
# ** SG Damage Shield
#=============================================================================
# sandgolem
# Version 2
# 1.06.06
#=============================================================================
RPG::Sprite::SG_DamShield_Anims = [121]
RPG::Sprite::SG_DamShield_Break = [134]
RPG::Sprite::SG_DamShield_Text = ['SHIELD DAMAGE']
$sg_defaults['Damage Shield'] = { 0=> [0,0] }
# Set damage shielding skills and values above.
# Example: { 14 => [1000,0], 18 => [200,0] }
# Effects is used for which animations and text it uses. The first value is 0.
# To add more, use [#,#] in all three constants with the second being 1, etc.
# USE THESE SKILLS CAREFULLY. Works good for enemies, but they and your players
# may be able to make themselves essentially immortal if you aren't careful.
#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# under the default scripts and the SDK if you're using it. Must be under
# anything that rewrites the damage definition, and oversized damage or an
# edit to your other script is required to show shield damage text.
#
# SG Settings Control is required for this script! Must be above this.
# This dependancy can easily be removed by editing the script.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================
#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
begin
SDK.log("SG Damage Shield", "sandgolem", 2, "1.06.06")
if SDK.state("SG Damage Shield") != true
@sg_damageshield_disabled = true
end
rescue
end
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if !@sg_damageshield_disabled
class Game_Battler
attr_accessor :sg_damshield
alias sandgolem_damageshield_battler_skilleff skill_effect
def skill_effect(user, skill)
if $game_sg['Damage Shield'].has_key?(skill.id)
self.sg_damshield = $game_sg['Damage Shield'][skill.id]
end
sandgolem_damageshield_battler_skilleff(user, skill)
end
end
module RPG
class Sprite < ::Sprite
if !method_defined?('sandgolem_damageshield_sprite_dam')
alias sandgolem_damageshield_sprite_dam damage
end
def damage(value, critical)
if @battler.sg_damshield != nil && value.to_i > 0
sg_temp = @battler.sg_damshield[0]
@battler.damage -= sg_temp
@battler.sg_damshield[0] -= value
if @battler.sg_damshield[0] <= 0
@battler.animation_id = SG_DamShield_Break[@battler.sg_damshield[1]]
@battler.sg_damshield = nil
sg_temp = value - sg_temp
value = sg_temp
else
@battler.animation_id = SG_DamShield_Anims[@battler.sg_damshield[1]]
@sg_dshieldcrittemp = $sg_critical_text
$sg_critical_text = SG_DamShield_Text[@battler.sg_damshield[1]]
critical = true
end
if @battler.damage <= 0
@battler.damage = 0
end
@battler.hp += sg_temp
end
sandgolem_damageshield_sprite_dam(value, critical)
if @sg_dshieldcrittemp != nil
$sg_critical_text = @sg_dshieldcrittemp
@sg_dshieldcrittemp = nil
end
end
end
end
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
사용법:
두번째 스크립트
13번째 줄에 보면
$sg_defaults['Damage Shield'] = { 0 => [0,0] }
라고 나와 있습니다.
{ 0 => [0,0] } 부분에서 맨 왼쪽 0에 스킬 번호를 써주십시요
예) 10번째 있는 스킬에 이것을 부여하고 싶으면 0 대신 10을 써주세요
그리고 [0,0] 에서, 왼쪽에 있는 0은 실드 내구력입니다. 그 옆에 0은 몰겠어요..
그리고 이런 스킬 여러개 하려면
{ 14 => [1000,0], 18 => [200,0] } 이런 식으로 해주면 됩니다.
*이해를 쉽게 하기 위해 예를 들겠습니다.
예) 20번째 스킬에 내구력 2000의 대미지 실드를 만들고 싶다
하면 { 20 => [2000,0] }
이라고 쓰면 됩니다.
주의1) 이 스크립트 사용시 전투 테스트에 오류가 납니다.(일반 게임 진행에는 문제 없습니다)
주의2) 특별히 제약 하지 않으면 완전 무적 수준이 됩니다...........
소비 마나를 엄청 하던가, 한 전투에 기술 한번밖에 못쓰게 하는게 발렌스 유지에 좋습니다.
오류 사항 있으면 댓글 달아 주시고요, 중복이면 자삭 하겠습니다
예)내구력 1000의 대미지 실드가 발동 중인데 2000의 대미지가 들어오면 주인공은 1000의 대미지만
입게 됩니다
예2) 내구력 1000의 대미지 실드가 발동 중인데 500의 대미지가 들어오면 주인공은 피해 입지 않고
대미지 실드 내구력이 500 떨어지게 됩니다
체력이 낮은 법사가 쓰면 좋습니다.
출저는 스크립트에 나와 있습니다
우선 SG Setting Control 스크립트 밑에 삽입 하셔야 합니다.
처음으로 올께
#=============================================================================
# ** SG Oversized Damage
#=============================================================================
# sandgolem
# Version 2
# 25.05.06
#=============================================================================
#
RPG::Sprite::SG_Damage_Size = 46
RPG::Sprite::SG_Text_Size = 32
RPG::Sprite::SG_Crit_Size = 24
$sg_critical_text = 'CRITICAL'
#
#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# Place this under the SDK (optional) if you're using it.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================
#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
begin
SDK.log("SG Oversized Damage", "sandgolem", 2, "25.05.06")
if SDK.state("SG Oversized Damage") != true
@sg_overdamage_disabled = true
end
rescue
end
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if !@sg_overdamage_disabled
module RPG
class Sprite < ::Sprite
def damage(value, critical)
dispose_damage
#------------------------------------------------------------------------------
# Begin SG Oversized Damage edit
#------------------------------------------------------------------------------
bitmap = Bitmap.new(160, 80)
if value.is_a?(Numeric)
damage_string = value.abs.to_s
bitmap.font.size = SG_Damage_Size
else
damage_string = value.to_s
bitmap.font.size = SG_Text_Size
end
bitmap.font.name = "Arial Black"
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(0, 12+2, 160, 36, damage_string, 1)
bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
if value.is_a?(Numeric) and value < 0
bitmap.font.color.set(176, 255, 144)
else
bitmap.font.color.set(255, 255, 255)
end
bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
if critical
bitmap.font.size = SG_Crit_Size
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, -1, 160, 20, $sg_critical_text, 1)
bitmap.draw_text(+1, -1, 160, 20, $sg_critical_text, 1)
bitmap.draw_text(-1, +1, 160, 20, $sg_critical_text, 1)
bitmap.draw_text(+1, +1, 160, 20, $sg_critical_text, 1)
bitmap.font.color.set(255, 255, 255)
bitmap.draw_text(0, 0, 160, 20, $sg_critical_text, 1)
end
#------------------------------------------------------------------------------
# End SG Oversized Damage edit
#------------------------------------------------------------------------------
@_damage_sprite = ::Sprite.new(self.viewport)
@_damage_sprite.bitmap = bitmap
@_damage_sprite.ox = 80
@_damage_sprite.oy = 20
@_damage_sprite.x = self.x
@_damage_sprite.y = self.y - self.oy / 2
@_damage_sprite.z = 3000
@_damage_duration = 40
end
end
end
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
그리고 바로 밑에 이 스크립트를 삽입해 주세요
#=============================================================================
# ** SG Damage Shield
#=============================================================================
# sandgolem
# Version 2
# 1.06.06
#=============================================================================
RPG::Sprite::SG_DamShield_Anims = [121]
RPG::Sprite::SG_DamShield_Break = [134]
RPG::Sprite::SG_DamShield_Text = ['SHIELD DAMAGE']
$sg_defaults['Damage Shield'] = { 0=> [0,0] }
# Set damage shielding skills and values above.
# Example: { 14 => [1000,0], 18 => [200,0] }
# Effects is used for which animations and text it uses. The first value is 0.
# To add more, use [#,#] in all three constants with the second being 1, etc.
# USE THESE SKILLS CAREFULLY. Works good for enemies, but they and your players
# may be able to make themselves essentially immortal if you aren't careful.
#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# under the default scripts and the SDK if you're using it. Must be under
# anything that rewrites the damage definition, and oversized damage or an
# edit to your other script is required to show shield damage text.
#
# SG Settings Control is required for this script! Must be above this.
# This dependancy can easily be removed by editing the script.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================
#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
begin
SDK.log("SG Damage Shield", "sandgolem", 2, "1.06.06")
if SDK.state("SG Damage Shield") != true
@sg_damageshield_disabled = true
end
rescue
end
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if !@sg_damageshield_disabled
class Game_Battler
attr_accessor :sg_damshield
alias sandgolem_damageshield_battler_skilleff skill_effect
def skill_effect(user, skill)
if $game_sg['Damage Shield'].has_key?(skill.id)
self.sg_damshield = $game_sg['Damage Shield'][skill.id]
end
sandgolem_damageshield_battler_skilleff(user, skill)
end
end
module RPG
class Sprite < ::Sprite
if !method_defined?('sandgolem_damageshield_sprite_dam')
alias sandgolem_damageshield_sprite_dam damage
end
def damage(value, critical)
if @battler.sg_damshield != nil && value.to_i > 0
sg_temp = @battler.sg_damshield[0]
@battler.damage -= sg_temp
@battler.sg_damshield[0] -= value
if @battler.sg_damshield[0] <= 0
@battler.animation_id = SG_DamShield_Break[@battler.sg_damshield[1]]
@battler.sg_damshield = nil
sg_temp = value - sg_temp
value = sg_temp
else
@battler.animation_id = SG_DamShield_Anims[@battler.sg_damshield[1]]
@sg_dshieldcrittemp = $sg_critical_text
$sg_critical_text = SG_DamShield_Text[@battler.sg_damshield[1]]
critical = true
end
if @battler.damage <= 0
@battler.damage = 0
end
@battler.hp += sg_temp
end
sandgolem_damageshield_sprite_dam(value, critical)
if @sg_dshieldcrittemp != nil
$sg_critical_text = @sg_dshieldcrittemp
@sg_dshieldcrittemp = nil
end
end
end
end
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
사용법:
두번째 스크립트
13번째 줄에 보면
$sg_defaults['Damage Shield'] = { 0 => [0,0] }
라고 나와 있습니다.
{ 0 => [0,0] } 부분에서 맨 왼쪽 0에 스킬 번호를 써주십시요
예) 10번째 있는 스킬에 이것을 부여하고 싶으면 0 대신 10을 써주세요
그리고 [0,0] 에서, 왼쪽에 있는 0은 실드 내구력입니다. 그 옆에 0은 몰겠어요..
그리고 이런 스킬 여러개 하려면
{ 14 => [1000,0], 18 => [200,0] } 이런 식으로 해주면 됩니다.
*이해를 쉽게 하기 위해 예를 들겠습니다.
예) 20번째 스킬에 내구력 2000의 대미지 실드를 만들고 싶다
하면 { 20 => [2000,0] }
이라고 쓰면 됩니다.
주의1) 이 스크립트 사용시 전투 테스트에 오류가 납니다.(일반 게임 진행에는 문제 없습니다)
주의2) 특별히 제약 하지 않으면 완전 무적 수준이 됩니다...........
소비 마나를 엄청 하던가, 한 전투에 기술 한번밖에 못쓰게 하는게 발렌스 유지에 좋습니다.
오류 사항 있으면 댓글 달아 주시고요, 중복이면 자삭 하겠습니다