조회 수 1461 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

저는 스크립트 문외한입니다..만 구글링의 힘을 빌려서 어느정도 스크립트를 짜집기 해봤습니다.

 

RPG MV 에 있는 변수 대입값 스크립트 (script) 란에 다음과 같이 입력했습니다.

 

if (target.result().critical) {

($gameActors.actor(7).mat *35.8 - $gameTroop.members()[0].mdf * 2)*2}

else {

$gameActors.actor(7).mat *35.8 - $gameTroop.members()[0].mdf * 2}

end

 

하지만 이대로 쓰면 에러가 납니다. target이나 result 에 대한 정의가 되지 않았다면서 말이죠.

 

조건부에 공격시 치명타가 터졌는지 안터졌는지 판별하는 부분을 어떻게 코딩 해야 하는지 알고 싶습니다.

 

(글로벌 변수니 인스턴스 변수니 아직 개념이 안잡혀서 모릅니다. ㅠ)

?
  • ?
    huguduk 2017.01.23 20:25
    스크립트 이전에 간단한 코딩공부를 하시면 도움이 될것같습니다.

    함수의 전체스코프를 올려주시지 않아서 원인은 알수없습니다만, 아마도 정의되지않은 변수 target혹은

    target의 result함수를 참조하지 못해서 문제가 생기는것같습니다.
  • profile
    lklslel 2017.01.27 01:52

    정확하게 어떤 기능을 만드시려는지 설명이 우선 필요합니다.

    어떤 상황에서 어느 쪽이 어떤 효과를 받는지 등등의

    일련의 흐름을 알려주시지 않으면 정확하게 캐치해드릴 수 없습니다.



    그리고 모호하게 생각하는 부분에 대해서 먼저 이야기하겠습니다.


    1. $gameActors 부분에서 $gameActors.actor(7)부분은


    Game_Action.prototype.subject = function() {
    if (this._subjectActorId > 0) {
    return $gameActors.actor(this._subjectActorId);
    } else {
    return $gameTroop.members()[this._subjectEnemyIndex];
    }
    };


    를 참고하셔서 작성하신 것 같은데

    맵을 이동하거나 바뀔 때마다 액터의 배열 인덱스 번호는 바뀌게 되어

    현재 맵에서 사용할 수 없는 this._subjectActorId 일 경우에는 제대로

    실행이 되지 않을 수 있습니다.


    우선 this._subjectActorId에 해당하는 액터가 존재하는가를 살펴야합니다.



    2. target.result().critical 이부분은 특정 객체(Game_Action 등) 내에서

    사용되는 외부로부터 전달되어 온 파라미터 변수 값을 기반으로

    로직이 기동하는 것이기 때문에 그냥 쓰게 되면 존재하지 않거나

    올바르지 않은 값이라는 에러가 뜨게 됩니다.


    Game_Action 객체는 배틀러의 각종 행동에 대한 처리를 담당합니다.


    배틀러로 등록된

    $gameParty.members()
    $gameTroop.members()

    에 연관된 모든 행동에 연관된다고 보시면 되겠습니다.


    그러므로 target.result().critical처럼 사용하시려면 target을

    가져올 수 있는 시점에 대해서 먼저 아셔야 합니다.

    BattleManager.startAction() 함수를 살펴보시면

    (js/rpg_manager.js : 2138줄)

    실행하는 중에 tartget들이 생성됩니다.


    BattleManager.startAction = function() {
    var subject = this._subject;
    var action = subject.currentAction();
    var targets = action.makeTargets();
    this._phase = 'action';
    this._action = action;
    this._targets = targets;
    subject.useItem(action.item());
    this._action.applyGlobal();
    this.refreshStatus();
    this._logWindow.startAction(subject, action, targets);
    };


    살펴보시면 여기에서는 직접적으로 실행해서

    크리티컬이 터졌는지까지는 알 수 없습니다.

    targets로 묶여있기 때문인데요.

    Game_Action.prototype.apply = function(target) {
    var result = target.result();
    this.subject().clearResult();
    result.clear();
    result.used = this.testApply(target);
    result.missed = (result.used && Math.random() >= this.itemHit(target));
    result.evaded = (!result.missed && Math.random() < this.itemEva(target));
    result.physical = this.isPhysical();
    result.drain = this.isDrain();
    if (result.isHit()) {
    if (this.item().damage.type > 0) {
    result.critical = (Math.random() < this.itemCri(target));
    var value = this.makeDamageValue(target, result.critical);
    this.executeDamage(target, value);
    }
    this.item().effects.forEach(function(effect) {
    this.applyItemEffect(target, effect);
    }, this);
    this.applyItemUserEffect(target);
    }
    };


    (js/rpg_object.js : 1644줄)

    를 살펴보시게 되면 케에데님께서 원하시는 부분이 나옵니다.

    result.critical = (Math.random() < this.itemCri(target));




    해당부분은 BattleManager 객체에서 전투시에 모두 접근이 가능합니다.

    BattleManager..actor()로 즉각적으로

    $gameParty.members()[this._actorIndex] or 대상없음

    으로 값을 알 수 있고

    전투시가 아니면 제대로된 값을 얻기 힘듭니다.


    추가적으로 모르시겠다면 질문해주세요.

  • ?
    케에데 2017.01.31 12:16

    긴 답글에 일단 감사드립니다.
    만들고자 하는 기능은 Yanfly 의 사이드베틀(시컨스1번) 플러그인에 있는 전투중 목표(user나 target(대상)을 정해서 HP를 증가시킬지 감소시킬지를 정하는 시컨스에서 HP증감양을 조절할때 정수와 변수로 조절하는 기능이 있는데 거기서 정수가 아닌 변수로 사용하고자 합니다.
    HP -100, user // HP +variable 13, target 이런식의 시컨스입니다.

    => 첫번째 유저의 체력을 100만큼 감소 // 둘째 변수13값 만큼 대상의 체력회복.


    그래서 저 변수값을 시컨스에 불러와서 쓰려고 하는데 문제는 HP 데미지를 만들고자 할때 크리티컬이 터졌는지 안터졌는지에 따라
    데미지의 양을 조절해서 대입하고자 하는건데 변수안에 있는 대입값 스크립트란에 코딩을 어찌해야 되는지를 몰라 질문드린겁니다.
    크리티컬이 터졌으면 2배의 데미지를 크리티컬이 안터졌으면 1배의 데미지를 이런식으로..

     

    $gameActors.actor(7).mat *35.8 - $gameTroop.members()[0].mdf * 2 => 액터 7번의 마법력 * 35.8 - 적 맴버 0번의 마법방어력 *2

    이부분은 제대로 실행이 되는것으로 확인이 되었습니다.

    다만 if 문을 써서 크리의 여부에 따라 실행값을 두부분으로 나누어야 하는데 조건부에 코딩을 모르겠습니다.

  • profile
    러닝은빛 2017.02.01 13:24

    데미지 값을 바꾸려는 거라면, Damage Core로 데미지 변경과 데미지의 흐름을 매개변수로 조절이 가능합니다.

     

    Damage Core - http://yanfly.moe/2015/11/07/yep-25-damage-core/

     

    모든 스크립트는 스킬 또는 아이템의 메모(Note)란에 적으면 됩니다.

     

    <damage formula>
    if (b.result().critical) {
      value = (a.mat *35.8 - b.mdf * 2)* 2;
    } else {
      value = a.mat *35.8 - b.mdf * 2;
    }
    </damage formula>


  1. 쯔꾸르 mv 게임을 apk 파일로 변환했는데...

    Date2023.01.14 By박하맛 Views1330
    Read More
  2. 쯔꾸르 젖소이야기 결혼 방법좀 알려주세요...

    Date2021.12.20 By백지씨 Views2626
    Read More
  3. apk포팅 승인 어케 하나요?

    Date2021.11.29 Bygame메이커xp Views1257
    Read More
  4. Yanfly님의 Action Sequence Pack 질문드립니다

    Date2021.07.15 ByNeuromancer Views1541
    Read More
  5. 싸게 MV 를 먼저? 아니면 돈을 더 들어서라도 MZ?

    Date2021.07.06 ByXatra Views1751
    Read More
  6. RMMV - 스탯창과 대화창 변견 관련 질문입니다. (초보입니다 도움좀 주세요 ㅜㅜ)

    Date2021.01.22 Byscribble Views1552
    Read More
  7. 아오오니를 하는 사람인데요 질문 두가지가 있어요

    Date2021.01.16 By오니개무서워 Views1634
    Read More
  8. 재밌는게임

    Date2020.12.07 Byland_tnt Views1455
    Read More
  9. c언어 질문

    Date2020.11.10 By세종기항19 Views1684
    Read More
  10. 코딩 질문

    Date2020.11.08 By세종기항19 Views1539
    Read More
  11. 혹시나 물어보는데

    Date2020.11.07 By드래곤규 Views1402
    Read More
  12. 오픈보 게임 더블드래곤 리로디드 얼티네이트에 대해 궁금

    Date2020.09.09 By이부닝 Views1224
    Read More
  13. 상태이상 확률 결정

    Date2020.09.02 By스트레이보우 Views1006
    Read More
  14. 다음 인디사이드 제작대회는 언제쯤 열릴까요?

    Date2020.05.23 ByWOONAALAA Views963
    Read More
  15. xp로 제작된 어플 실행자체가 안된다는 분이 있습니다.(제생각엔 apk로 변환하는 과정에서 버전자체가 낮은 것 같습니다)

    Date2020.05.04 By라엔 Views1415
    Read More
  16. apk 포팅하는데 게임 이름이 필요합니다 뜨는데

    Date2020.05.03 Bykashu Views1349
    Read More
  17. 쯔꾸르VX Ace렉먹음 도와주세요...

    Date2020.03.22 By랖랖 Views1779
    Read More
  18. 안녕하세요

    Date2020.02.14 By청월령 Views834
    Read More
  19. 포팅 중 '게임 이름이 필요합니다' 오류

    Date2020.02.11 By아이비스 Views817
    Read More
  20. RPGMV 거리 추적

    Date2020.01.19 By정욱 Views930
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 442 Next
/ 442


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

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