RPG XP 사용중인데요..
--------------------------질문 1.------------------------------
atk = [attacker.atk - self.pdef / 1, 0]. max
self.damage = atk * attacker.str
이게 원래는
atk = [attacker.atk - self.pdef / 2, 0]. max
self.damage = atk * attacker.str /20
이었는데..
이게 기본공격데미지 계산식입니다!
그런데 아시다시피 데미지는 숫자가 가지가지잖습니까!
일정 범위 내에서만 나온다지만..
하지만 이 공식대로라면 항상 같은값이 나와야하는데
[attacker.atk - self.pdef / 2, 0]. max
이 부분때문에 여럿 갈리는건지..해서요.
self.pdef 나누기 2,0 이라니..
2 또는 0으로 나눈다인가.. 아니면 다른말인가..해서요.
아니 그리고 0으로 어떻게 나눈다는 말입니끄아아아!!
저의 능력으론 이해 불능이라서 이렇게 올립니다..ㅠㅠ
------------------질문 2.------------------------------
# 분산
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1]. max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
요것은 기본공격데미지 분산의 공식입니다.
eva = 8 * self.agi / attacker.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
이것은 기본공격데미지의 제2차명중판정입니다.
def hit
n = 100
for i in @states
n *= $data_states[i]. hit_rate / 100.0
end
return Integer(n)
end
그리고 이것은 hit라는 값의 취득을 위한 부분인데..(Battler 1)
이 세 부분은 아무리 용을 써도 이해가 안됩니다 !!
질문 2-1.hit 라는 값을 어떻게 취득한것이며!!(스킬은 따로 명중율이 존재하지만, 기본공격은 그렇지 않다 이 말입니다..)
2-2.분산이란 무엇이며!! 어떤 결과를 불러 일으키는지!!
제 2차명중판정에서
eva = 8 * self.agi / attacker.dex + self.eva
이 한줄 빼곤 도저히 해석이 안됩니다 ㅠㅠ
eva라는 값= 8곱하기 방어자의 agi값 나누기 공격자의 dex값더하기 방어자의 eva값
그 밑에서 방금 위에서 쓰인 eva 라는 값들이 쓰이는데!!
hit = self.damage < 0 ? 100 : 100 - eva
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
요것들입니다.
2-3.그런데 도무~지 이 세 줄은 어떤 계산방식인지 이해가 안갑니다..ㅠㅠ
---------------------질문 3.--------------------------------------
# 제일 명중 판정
hit = skill.hit
if skill.atk_f > 0
hit *= user.hit / 100
end
hit_result = (rand(100) < hit)
# 불확실한 스킬의 경우는 유효 플래그를 세트
effective |= hit < 100
# 명중의 경우
if hit_result == true
# 위력을 계산
power = skill.power + user.atk * skill.atk_f / 100
if power > 0
power -= self.pdef * skill.pdef_f / 200
power -= self.mdef * skill.mdef_f / 200
power = [power, 0]. max
end
# 배율을 계산
rate = 20
rate += (user.str * skill.str_f / 100)
rate += (user.dex * skill.dex_f / 100)
rate += (user.agi * skill.agi_f / 100)
rate += (user.int * skill.int_f / 100)
# 기본 데미지를 계산
self.damage = power * rate / 20
이것은 스킬의 제1명중판정부터 기본데미지까지입니다.
# 분산
if self.damage.abs > 0
amp = [self.damage.abs * skill.variance / 100, 1]. max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# 제2 명중 판정
eva = 8 * self.agi / user.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
이것은 스킬의 분산과 제2명중판정입니다.
3-1.제1명중판정부터 계속 보이기 시작하는 특징이..
skill.atk_f , skill.atk_f ,skill.pdef_f
이런 값들인데..
기본공격데미지때 해석한결과 attacker.atk 면.. attacker 의 atk 값이라고 해석됬는데..똑같이 해보면..
skill의 (atk_f) 값 이라고 되는데,
atk_f 의 값은 어떤값인가요? 다른 값들도 똑같이 _f 만 붙이면 비슷한 방식으로 구해지는 값이 되는건가요?
3-2. 배율을 계산에서..
# 배율을 계산
rate = 20
rate += (user.str * skill.str_f / 100)
rate += (user.dex * skill.dex_f / 100)
rate += (user.agi * skill.agi_f / 100)
rate += (user.int * skill.int_f / 100)
# 기본 데미지를 계산
self.damage = power * rate / 20
인데.. rate를 20으로 지정해놓고..
rate += 유저의str값 곱하기 스킬의 str_f값 나누기 100
rate += 유저의dex값 곱하기 스킬의 dex_f값 나누기 100
이런식으로 되고있는데..
대체 이게 뭔뜻인가요?
---------------------질문 4.------------------------------
==
+=
-=
/=
*=
의 계산방식..이 뭔가요?
[XXX.SS /x, y]. max
는..무슨뜻이죠?
self.damage.abs
는 스킬의 분산과 기본공격의 분산에서 공통으로 보이는데요..
방어자의 데미지의 abs 값 이라는게 무슨뜻이죠..?
abs가 스크립트에 따로 지정되어있는건가요?
--------------------------질문 1.------------------------------
atk = [attacker.atk - self.pdef / 1, 0]. max
self.damage = atk * attacker.str
이게 원래는
atk = [attacker.atk - self.pdef / 2, 0]. max
self.damage = atk * attacker.str /20
이었는데..
이게 기본공격데미지 계산식입니다!
그런데 아시다시피 데미지는 숫자가 가지가지잖습니까!
일정 범위 내에서만 나온다지만..
하지만 이 공식대로라면 항상 같은값이 나와야하는데
[attacker.atk - self.pdef / 2, 0]. max
이 부분때문에 여럿 갈리는건지..해서요.
self.pdef 나누기 2,0 이라니..
2 또는 0으로 나눈다인가.. 아니면 다른말인가..해서요.
아니 그리고 0으로 어떻게 나눈다는 말입니끄아아아!!
저의 능력으론 이해 불능이라서 이렇게 올립니다..ㅠㅠ
------------------질문 2.------------------------------
# 분산
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1]. max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
요것은 기본공격데미지 분산의 공식입니다.
eva = 8 * self.agi / attacker.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
이것은 기본공격데미지의 제2차명중판정입니다.
def hit
n = 100
for i in @states
n *= $data_states[i]. hit_rate / 100.0
end
return Integer(n)
end
그리고 이것은 hit라는 값의 취득을 위한 부분인데..(Battler 1)
이 세 부분은 아무리 용을 써도 이해가 안됩니다 !!
질문 2-1.hit 라는 값을 어떻게 취득한것이며!!(스킬은 따로 명중율이 존재하지만, 기본공격은 그렇지 않다 이 말입니다..)
2-2.분산이란 무엇이며!! 어떤 결과를 불러 일으키는지!!
제 2차명중판정에서
eva = 8 * self.agi / attacker.dex + self.eva
이 한줄 빼곤 도저히 해석이 안됩니다 ㅠㅠ
eva라는 값= 8곱하기 방어자의 agi값 나누기 공격자의 dex값더하기 방어자의 eva값
그 밑에서 방금 위에서 쓰인 eva 라는 값들이 쓰이는데!!
hit = self.damage < 0 ? 100 : 100 - eva
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
요것들입니다.
2-3.그런데 도무~지 이 세 줄은 어떤 계산방식인지 이해가 안갑니다..ㅠㅠ
---------------------질문 3.--------------------------------------
# 제일 명중 판정
hit = skill.hit
if skill.atk_f > 0
hit *= user.hit / 100
end
hit_result = (rand(100) < hit)
# 불확실한 스킬의 경우는 유효 플래그를 세트
effective |= hit < 100
# 명중의 경우
if hit_result == true
# 위력을 계산
power = skill.power + user.atk * skill.atk_f / 100
if power > 0
power -= self.pdef * skill.pdef_f / 200
power -= self.mdef * skill.mdef_f / 200
power = [power, 0]. max
end
# 배율을 계산
rate = 20
rate += (user.str * skill.str_f / 100)
rate += (user.dex * skill.dex_f / 100)
rate += (user.agi * skill.agi_f / 100)
rate += (user.int * skill.int_f / 100)
# 기본 데미지를 계산
self.damage = power * rate / 20
이것은 스킬의 제1명중판정부터 기본데미지까지입니다.
# 분산
if self.damage.abs > 0
amp = [self.damage.abs * skill.variance / 100, 1]. max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# 제2 명중 판정
eva = 8 * self.agi / user.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
이것은 스킬의 분산과 제2명중판정입니다.
3-1.제1명중판정부터 계속 보이기 시작하는 특징이..
skill.atk_f , skill.atk_f ,skill.pdef_f
이런 값들인데..
기본공격데미지때 해석한결과 attacker.atk 면.. attacker 의 atk 값이라고 해석됬는데..똑같이 해보면..
skill의 (atk_f) 값 이라고 되는데,
atk_f 의 값은 어떤값인가요? 다른 값들도 똑같이 _f 만 붙이면 비슷한 방식으로 구해지는 값이 되는건가요?
3-2. 배율을 계산에서..
# 배율을 계산
rate = 20
rate += (user.str * skill.str_f / 100)
rate += (user.dex * skill.dex_f / 100)
rate += (user.agi * skill.agi_f / 100)
rate += (user.int * skill.int_f / 100)
# 기본 데미지를 계산
self.damage = power * rate / 20
인데.. rate를 20으로 지정해놓고..
rate += 유저의str값 곱하기 스킬의 str_f값 나누기 100
rate += 유저의dex값 곱하기 스킬의 dex_f값 나누기 100
이런식으로 되고있는데..
대체 이게 뭔뜻인가요?
---------------------질문 4.------------------------------
==
+=
-=
/=
*=
의 계산방식..이 뭔가요?
[XXX.SS /x, y]. max
는..무슨뜻이죠?
self.damage.abs
는 스킬의 분산과 기본공격의 분산에서 공통으로 보이는데요..
방어자의 데미지의 abs 값 이라는게 무슨뜻이죠..?
abs가 스크립트에 따로 지정되어있는건가요?