?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

오브젝트 함정을 만들고, 주인공의 일정 체력 이하가 될경우 경고문을 삽입하는게 목적입니다만, 어째선지 변수가 이상하게 나오더라고요. 

 

가상의 변수 #0001 를 주인공 체력으로 명명 하였습니다.

기본 체력 20이었을 때 가정.

 - - - - 

변수 조작 = 주인공 체력  = 주인공 HP

 

   조건분기 : 주인공 체력 <= 5 

          HP증감 : {주인공 체력}, -4 

          텍스트 : 더 하면 죽을지도 몰라!

 

   그 이외 경우 

          HP 증감  : {주인공 체력}, -4

          텍스트 : 위험하잖아.

 

   분기 종료

변수 조작 : 주인공 체력 -= 4

 

 

- - -  -

 

제가 생각한 알고리즘은 

 

 

첫번째 조작시  주인공 체력 = 주인공 HP 이므로  주인공 체력을  주인공 현재 체력 20에 맞춰서 선언함

첫번째 조작 끝날 시  주인공 체력 = 주인공 체력 -4  

 

 

2번째 = 주인공 현재 체력인 16에 맞춰서 선언 끝날때  -4 했으니 12

3번째 = 12 / 끝날때 8

4번째 = 8   / 끝날때 4

 

5번째 실행할 때 4이하 이므로 조건 충족하여 조건문 실행.

 

 

이렇게 생각하고 있었는데, 알만툴은  첫번째 조작 할 때만 작동을 했는지 16,16,16,16....   고정이 되어버리더라고요.  주인공 체력은 정상적으로 작동 하는데, 변수만 이상합니다.

 

변수 조작 이벤트를 활용하여 주인공 체력이라는 변수를 주인공 HP에 맞추라는 명령문을 썼음에도 왜 주인공 HP에 맞춰서 되지 않고 먹통이 되어버릴까요? 뭘 놓쳤길래 변수가 16 고정이 되는건지...  알만툴에서 이번에 변수를 처음 만져보는데, 이 것 때문에 미치겠어요. 

 

 

P.S 최대체력 아닌거 확인했습니다. 그냥 HP라고 되어 있길래 그걸로 선택 했어요.

 

이런 식입니다.

TAG •
?
  • profile
    천무 2017.04.28 23:10
    주인공의 HP변수대입시 현재량이 아닌 최대량을 대입하신건 아닌지요
  • ?
    참몰랑 2017.04.29 14:05

    아니에요. 적어놨듯이 최대 HP와 HP 있길래 HP를 선택 했습니다. 혹시나 해서 최대 HP 했더니
    체력조차 깎이지 않았어요.

     

    제 생각엔 주인공 HP으로 바꿈 동작이 제대로 된다면 변수 -4 안해도 됐을텐데, 하다하다 안돼서 혹시나 하고 집어 넣어본 것입니다.

  • profile
    lklslel 2017.04.29 14:54
    사용하시는 RPG maker의 종류를 알려주시기

    바랍니다.


    종류마다 사용하는 언어가 같은 것도 있지만,

    다른 경우가 많아서 시스템의 구성방식에

    따라 상당한 차이가 발생할 수 있습니다.


    가능하다면... 해당부분을 스크립트로 변환해서

    보여주시면 안될까요?
  • ?
    참몰랑 2017.04.29 16:09
    전 아직 스크립트를 짤 줄 몰라서 스크립트 구현을 아예 안한 상태입니다.
    그리고 저 오브젝트는 단독 오브젝트라 병렬 처리 그런 것 또한 아니에요.

    증감 처리 부분은 액터 1밖에 존재하지 않는 게임인지라 액터 1를 지정 해보았는데, 변수 또한 16 그대로 되어 있더라고요. 그래서 이러나 저러나 똑같다고 생각 됐습니다.

    태그에 있는 것처럼 MV에요.
  • profile
    lklslel 2017.04.29 15:00
    HP증감 함수 사용부분에 적용할 캐릭터를 지정해야

    정상적으로 적용이 되는 것이 아닌지 한 번 확인해보시기

    바랍니다.
  • profile
    lklslel 2017.04.30 15:58

    가능하시다면 작성하신 이벤트를 분석해볼 수 있게

    게임프로젝트폴더\data\해당 이벤트가 들어있는 맵.json

     

     

    게임프로젝트폴더\data\CommonEvents.json

    파일을 업로드해주실 수 있으시겠습니까?


    이벤트 정보를 기반으로 스크립트 분석을 해본다면

    어떤 문제가 있는지 확실하게 파악할 수 있을 것으로 보입니다.

  • ?
    참몰랑 2017.05.02 00:12 Files첨부 (1)

    해당 맵과 이벤트 압축했습니다. 무슨 문제일까요... ㅜㅜ

  • profile
    lklslel 2017.05.02 16:13
    "code":311,
    "indent":1,
    "parameters":[1,1,1,0,4,true]

    이 부분이 바로 문제의 부분입니다.

    // Game_Interpreter.prototype.command311 실행 시작

    // Change HP
    Game_Interpreter.prototype.command311 = function() {
    var value = this.operateValue(this._params[2], this._params[3], this._params[4]);
    this.iterateActorEx(this._params[0], this._params[1], function(actor) {
    this.changeHp(actor, value, this._params[5]);
    }.bind(this));
    return true;
    };



    this._params = [1,1,1,0,4,true];
    //또는
    //this._params = {};
    //this._params[0] = 1;
    //this._params[1] = 1;
    //this._params[2] = 1;
    //this._params[3] = 0;
    //this._params[4] = 4;
    //this._params[5] = true;


    var value = this.operateValue(1,0,4);


    // Game_Interpreter.prototype.operateValue 실행 시작

    Game_Interpreter.prototype.operateValue = function(operation, operandType, operand) {
    var value = operandType === 0 ? operand : $gameVariables.value(operand);
    return operation === 0 ? value : -value;
    };

    operation = 1
    operandType = 0
    operand = 4

    var value = 0 === 0 ? 4 : $gameVariables.value(4);
    //0 이 0이 맞다면 4, 아니면 4번 변수값
    return 1 === 0 ? 4 : -4;
    // 결과값으로는 operation 값이 1이고, 0과 같지 않기 때문에 value의 값(4)을 음수로 넘겨줍니다

    // Game_Interpreter.prototype.operateValue 실행 끝


    this.iterateActorEx(1,1, function(actor) {
    this.changeHp(actor, -4,true);
    }.bind(this));


    // Game_Interpreter.prototype.iterateActorEx 실행시작

    Game_Interpreter.prototype.iterateActorEx = function(param1, param2, callback) {
    if (param1 === 0) {
    this.iterateActorId(param2, callback);
    } else {
    this.iterateActorId($gameVariables.value(param2), callback);
    }
    };

    param1 = 1;
    param2 = 1;
    callback = function(actor) {
    this.changeHp(actor, -4,true);
    }.bind(this);

    // param1 값이 1이기때문에 else 부분이 실행됩니다.

    if (1 === 0) {
    this.iterateActorId(1, callback);
    } else {
    this.iterateActorId($gameVariables.value(1), callback);
    }

    // Game_Interpreter.prototype.iterateActorId 실행시작

    Game_Interpreter.prototype.iterateActorId = function(param, callback) {
    if (param === 0) {
    $gameParty.members().forEach(callback);
    } else {
    var actor = $gameActors.actor(param);
    if (actor) {
    callback(actor);
    }
    }
    };

    // 주인공의 체력변수에 있는 값이 20이므로 param의 값은 20이 됩니다.

    param = 20;
    callback = function(actor) {
    this.changeHp(actor, -4,true);
    }.bind(this);

    // param 값이 0이 아니기 때문에 else 부분이 실행됩니다.

    if (20 === 0) {
    $gameParty.members().forEach(callback);
    } else {

    // 20번 액터의 정보를 불러옵니다.
    // 하지만 20번 액터가 해당 액터일 경우에는 운 좋게 맞아 떨어지지만
    // 맵 정보를 보게되면 "actorId":1 이라고 조건이 명시가 되어있기 때문에
    // 올바른 액터의 ID가 아니게 됩니다.

    var actor = $gameActors.actor(20);

    // actor의 데이터가 존재한다면 callback(actor)를 실행합니다.

    if (actor) {
    callback(actor);
    }
    }


    결론을 말씀드리자면 HP증감은 직접적으로 액터의

    데이터에 접근하는 방식으로 작성이 되어있기 때문에

    따로 체력변수를 두실 필요가 없고 바로 액터의 정보로

    비교문의 사용과 함수의 사용을 하시면 된다는 겁니다.


    조건분기시 주인공의 체력 변수가 아닌 주인공 자체를

    선택하시고 체력 값으로 지정해주시면 제대로 됩니다.

    그리고 실제 체력 데이터 값을 적용하실 때에도

    주인공을 선택하시고 체력값에 바로 적용시키시면 됩니다.




    정리를 하자면 실제 조건분기까지는 실행이 되었지만

    변수가 가르키고 있던 체력의 데이터를 액터의 ID로

    잘못 접근하여 조작하려고 했던 것이 문제였습니다.

    이어서 마지막 변수 조작이 되어서 16으로 된 것은

    해당 액터의 체력값을 가르키고 있었기 때문에

    그 부분만 정상적으로 작동을 한 것처럼 보인 겁니다.
  • ?
    참몰랑 2017.05.03 00:57

    와...제 이벤트에 그런 코드 문제가 있었군요. 잘 몰랐네요.
    제가 생각했던 것과 다르게 변수가 제대로 동기화가 안돼서 헛짓하고 있었다니...알만툴 변수 시스템은 어떤 시스템인지 아직까지도 감이 잡히지 않네요. 

    조건분기에 주인공의 스탯 부분은 없더라고요. 스탯 보니까 상태이상만 나와있어서 체력 같은걸 조절하려고 했더니, 항목이 없어서 스크립트를 짜거나 변수를 새로 파야 할 것 같은 기분이 들어 변수를 팠는데, 잘못하고 있었군요. 변수가 제대로 정의가 되지 않았다는 소리를 들었음에도 아직 해결방법을 잘 모르겠습니다.

    제가 알만툴을 아직까지 잘 활용하지 못하는 상태라서 어떻게 이어줘야 할 지 감이 안 잡힙니다. 현재 전 이 문제 때문에 며칠째 넋놓고 있어요. 이 구간을 어떻게 하면 현명하게 풀어나갈 수 있을까요?

     

    초보 하나 구한다 치고 가르쳐 주시면 고맙겠습니다.

     

  • profile
    lklslel 2017.05.03 12:15
    MV에서 사용되는 javascript를 배워서 하시라는 것에는

    무리가 있으니 참몰랑님께서 하신 방법을 조금만 바꿔서

    할 수 있는 방법을 알려드리겠습니다.


    우선 제가 달아둔 댓글 내용들 중에서 조건분기까지는

    제대로 작동했었다는 내용을 기억하시는지요?


    변수가 주인공의 체력값을 가르키도록 이전과 같이

    하신 다음에 HP증감 부분에서만 주인공의 체력 변수

    대신에 주인공 액터를 넣으시면 바로 해결이 되겠습니다.
  • ?
    참몰랑 2017.05.05 03:22
    아... 멀리도 돌아왔네요. 그런 방법이 있었다니.... 상세한 설명 정말 고맙습니다!

  1. 이런 오류가 뜨는데 답변좀요 ㅠㅠ

    Date2017.10.22 By옥냥하트구스타브 Views389
    Read More
  2. 메뉴 일부분 없애기

    Date2017.10.22 By지스 Views333
    Read More
  3. 어떤 무기를 장착한 것에 따라 다른 이벤트 발생하게 만들기

    Date2017.10.21 By일공 Views685
    Read More
  4. MV 파고있습니다

    Date2017.10.16 By지스 Views733
    Read More
  5. MV로 만든 게임을 여러 언어로 판매할 수 있는 방법이 있나요?

    Date2017.10.11 By정의오타쿠 Views851
    Read More
  6. [MV] 세이브 파일 전부 삭제하는 MV 스크립트 없나요?

    Date2017.10.10 By준E Views735
    Read More
  7. MV에서 apk로 변환하려는데, intel XDK가 이상하네요

    Date2017.10.08 ByYangMyunCreeper Views361
    Read More
  8. rpg maker mv 아이템 확률로 강화하는 방법

    Date2017.10.08 By일공 Views635
    Read More
  9. RPGVXAce 이벤트 지우는법좀 알려주세요 ㅠㅠ

    Date2017.09.10 By새싹시계 Views788
    Read More
  10. 들여온 맵 그림자를 어떻게 넣죠??

    Date2017.09.03 By옆집여우 Views753
    Read More
  11. MV 맵 만들때 이 사진대로 하려면 어떻게 해야 하나요?

    Date2017.09.02 By준E Views1539
    Read More
  12. [MV] 사이드뷰 배틀 시, 스킬 사용해도 무기를 들게 하려면 어떻게 해야 하나요?

    Date2017.09.02 By경하 Views752
    Read More
  13. 렌파이 프로그래밍 질문입니다

    Date2017.08.31 ByDKDKDKDK Views425
    Read More
  14. [급함]VXA 첫번쨰 시작 맵에서 장소이동을 한뒤 움직이지 않아요

    Date2017.08.23 By약빨은ㄱㅏㅅㅣ Views733
    Read More
  15. 유니티질문이요~~

    Date2017.08.09 By테일러 Views760
    Read More
  16. [RPG MV] 캐릭터 소모 자원의 이름

    Date2017.08.07 Byhellintz Views322
    Read More
  17. [MV] 기본 화면이 이상합니다. 조언을 부탁드려요.

    Date2017.08.05 By빛이고싶은 Views497
    Read More
  18. 아이템 이름같은것도 저작권이 있을까요?

    Date2017.07.29 By쫀쫀무 Views1155
    Read More
  19. RPG MAKER MV에서 능력치 한계점을 바꾸는 방법이 궁금합니다.

    Date2017.07.26 By달빛날개 Views460
    Read More
  20. 키늘리는방법없나요....

    Date2017.07.11 ByHo냥이 Views571
    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(김원배) | 사신지(김병국)