이 질문에 진짜 확실한 답변 달아주실수 있는분 안계신가요 ㅠ

by evloant posted Jan 13, 2006
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
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가 스크립트에 따로 지정되어있는건가요?

Articles

1 2 3 4 5 6 7 8 9 10