조회 수 2007 추천 수 0 댓글 7
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

VX Ace의 민첩성은 2K때처럼 명중률에 영향을 주는 것 같지 않더군요.


민첩성이 낮으면 명중률을 깎이고, 민첩성이 높으면 명중률이 높아지는 설정은 어떻게 하지요?


구글링을 해도 RGSS2 데이터만 나와서 질문을 올립니다.


( 참고했던 RGSS2 : http://www.rpgmakervx.net/index.php?showtopic=39467 )




VX Ace의 Battler스크립트에는 다음 부분이 명중률/회피율 계산과 관련있는 것 같아 보입니다.


  #--------------------------------------------------------------------------

  # ● スキル/アイテムの命中率計算

  #--------------------------------------------------------------------------

  def item_hit(user, item)

    rate = item.success_rate * 0.01         # 成功率を取得

    rate *= user.hit if item.physical?      # 物理攻撃:命中率を乗算

    return rate                             # 計算した命中率を返す

  end

  #--------------------------------------------------------------------------

  # ● スキル/アイテムの回避率計算

  #--------------------------------------------------------------------------

  def item_eva(user, item)

    return eva if item.physical?            # 物理攻撃なら回避率を返す

    return mev if item.magical?             # 魔法攻撃なら魔法回避率を返す

    return 0

  end




命中率計算칸의 rate *= 줄을


    rate *= user.hit * user.agi / self.agi  if item.physical?


로 바꾸어서 테스트 해 봤는데 agi 두배 높은 적을 상대로 적은 우리편을 맞추기만 하고 우리편은 빗나가기만 하네요.


계산식대로라면 우리편이 적에게 절반은 맞추어야 할텐데.


방법이 없을까요?

?
  • profile
    Vermond 2012.03.06 22:52

    명중률만 따지실게 아니라 회피율도 따지시고, 실제 명중을 결정하는 부분이 따로 있으리라고 보여지므로 그 부분도 수정하셔야 될 듯 싶습니다.


    명중률과 회피율을 따로 작성해 두었다면, 실질적인 명중 여부를 결정하는 계산식이 다른 곳에 있겠죠.


    체감상 2배가 안 나오는건 시도 횟수가 부족해서일 수도 있지만, 계산식에서 뭔가 결과가 달라질 수도 있지 않은가 하고 봅니다

  • ?
    올리브오일 2012.03.07 01:34
    적의 공격력을 낮추고 HP를 높게 세팅하여 테스트용 적을 만들어서 공격을 약 50회 주고받은 테스트를 했으니 시도 횟수가 너무 적은 탓은 아닌 것 같습니다.

    VX ace는 각 캐릭터와 몬스터의 명중률을 DB에서 직접 설정하는데, 제 짐작에는 이 값이 그대로 user.hit으로 가는 것 같습니다.

    hit은 Game_BattlerBase에서 정의됩니다. (기본 스크립트 65행)
    그리고 Game_Battler 중 본문에 나오는 命中率計算에서 hit값을 계산합니다.

    그리고 502-503행인데
        @result.missed = (@result.used && rand >= item_hit(user, item))
        @result.evaded = (!@result.missed && rand < item_eva(user, item))

    난수가 hit값과 같거나 이보다 크면 빗나가고, 안 빗나갔어도 난수가 eva값보다 작으면 회피당하는 것 같습니다.

    hit이 충분히 크면 난수가 hit보다 커질 일이 없으니 빗나가지 않을 텐데...
    혹시 기본 스크립트의 다른 곳에 제가 건드려야 할 계산식이 있으면 알려주세요.
    아니면 계산식 어디선가 제가 예측하지 못한 에러가 났을 수도 있고요.
  • ?
    올리브오일 2012.03.07 01:42
    다른 변수를 선언하고 보정된 명중률을 그 변수가 받아, user.hit 대신 쓰게 하는 쪽도 생각해 보았는데...
    저의 루비 실력이 미천해서 어디서부터 손을 대야 할 지 모르겠습니다.

    공격자의 agi가 적보다 높거나 같으면 hit값을 그대로 적용하고
    else에서만 위 식을 적용해볼 수도 있는데...
    命中率計算 내부에서 조건문을 만들었을 때는 에러가 나더군요.

    변수를 선언하면 에러 없이 조건문을 돌릴 수도 있을텐데 자신이 없습니다.
    명중-빗나감, 명중-회피당함을 결정하는 난수가 0에서 1 범위에서 움직이는지, 0에서 100범위에서 움직이는지도 잘 모르겠고요.
    변수 선언으로 해결할 수 있겠다 싶은 부분이 있으면 그쪽도 좀 조언해주셨으면 합니다.
  • profile
    Vermond 2012.03.07 01:50

    플밍은 부분적으로 보면 뭐가 뭔지 절대 알 수가 없습니다 -_-;;

    원 소스 보고 분석을 해봐야 자세한걸 알수 있을 듯 하네요

  • ?
    인파 2012.03.07 01:56

    VX Ace 디폴트 스크립트는

    http://rgss.9bu.org/c642eb4e4350df51988ac409cb341b81

    여기에 있습니다.


    hit으로 검색하면 white나 whiten도 섞여 나오지만 거의 Game_Battler에 모여 있습니다.

  • profile
    Vermond 2012.03.07 04:25

    rand는 0과 1사이의 실수를 반환합니다 (0.535235 같은)


    명중률 계산이 아이템 명중-미스계산-캐릭터회피-회피계산 으로 되어 있어서 수정하기 미묘한데

    일단 수정하기 전에 원본을 저장해두시거나 맨 앞에 #를 추가해두면 주석처리가 되어서 동작을 안 하니까

    변경하고 싶은 부분에 #를 넣으시고 수정해보시는걸 권합니다


    그리고 계산식에서 사용되는 값은 전부 0~1이므로 계산값이 1을 넘어가면 무조건 명중/회피가 됩니다

    값이 0~1 사이를 벗어나서 이상한 결과가 나온 것 같네요.


    이게 참 애매한게 적이 5고 내캐릭이 10이면 보정치 x2가 되는데

    이 경우 원래 명중률이 0.5 이상이 나오면 1이 넘어서 무조건 명중/회피가 되게 됩니다.

    위에서 언급하신건 내 어질의 2배가 적이라고 했으니 반대로 적만 무조건 명중했겠군요


    그러니 보정치를 넣어서 조정을 해줘야 되는데 지금은 배고파서 잘 생각이 안나네요 -_-;;



    나머지 말하신 부분은 대략 잘 이해하셨으니 괜찮다고 보고

    수식 연구를 좀 하시면 될 듯 합니다

    수학공부할 시간이네요 -_-;



    요약하자면 명중률이 0~1 사이로 나와야 되는데 이 범위를 넘어서서 이상한 결과가 나왔다고 보여집니다


  • ?
    올리브오일 2012.03.07 19:48

    정말 감사합니다. 0~1사이에서 나오게 식을 짜야겠군요.


    예전에 하던 게임이 X=0.5^N 같은 식을 썼습니다.

    N이 커지면 결과값이 쪼그라들고 [ X = 0.125 (N=3) ]

    N이 작아지면 결과값이 1에 수렴하는 [ X = 0.933 (N=0.1) ] 결과를 내줬습니다.


    적의 agi가 내 agi의 몇 배인가를 N으로 놓고, (적이 내 agi의 두 배면 2, 절반이면 0.5)

    N의 밑을 잘 조정하면 응용이 될 것 같습니다.

    이번엔 식이 꼬이지 않기를 ㅋㅋㅋㅋㅋㅋ


List of Articles
번호 제목 글쓴이 날짜 조회 수
8608 L.I.P(Life IsParadise) 구동시 랙유발과같이 게임이꺼져요 4 simp 2014.09.10 2045
8607 알만툴 2000에서 DirectDraw Error가 뜹니다. 1 2010.03.23 2044
8606 알만툴 MV... 시작시 로고 안뜨게 만들 수 없을까요 8 럽앤피 2016.09.02 2038
8605 '메모리 스트림 확대 중에 메모리가 부족해졌습니다' 그리고 데이터 손상. 땡중 2011.02.11 2037
8604 [RPGVX]Bitmap, Sprite Class에 대한 질문입니다. 녹색주머니 2010.10.02 2030
8603 드래곤라자 길드가 뭔가요? 1 BrainStew 2010.06.17 2029
8602 이거 오류인가여 해결법은 ㅜㅜ 1 은지 2013.12.06 2028
8601 아래에 질문했던 대시에 문제가 생겼습니다. Vermond 2010.11.24 2025
8600 RPG2003 자작페이스셋 저장시 질문요. 1 lobotomy 2009.07.11 2018
8599 질문입니다. 디아즈 2011.01.25 2016
8598 에디롤 오케스트라 골룸들의합창 2007.11.29 2013
8597 알만툴 vx 테스트 실행시키면 검은색 화면이되요... 4 file fate세이버 2016.06.01 2008
» VX Ace 명중률 계산에 Agi(민첩성) 적용 어떻게 하죠? 7 올리브오일 2012.03.06 2007
8595 Vx ace 모바일런타임패키지 다운법 1 하재오비잴부네채즙세탸빕 2014.02.10 2006
8594 음악 작곡할때 좋은 프로그램좀 알려주세요. 1 1 마루 2010.10.24 1999
8593 미국노래중 신나는곡,데스메탈,리듬이좋은곡,중독성잇는곡 추천해주세요. 1 ps인간 2009.05.29 1998
8592 아오오니있으신분주시면안될까요? 4 앙바바바 2015.06.17 1990
8591 카론rpg전직 질문 4 따분한대륙 2014.04.26 1990
8590 RPG MV 대화 중 세이브 기능.. 3 정궈니 2016.03.11 1989
8589 드럼이나 퍼커션 리듬 배우기 하얀델 2007.11.02 1988
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 ... 442 Next
/ 442






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)