질문과 답변

Extra Form

몇몇 분들의 도움으로 아이템 장착 시 직업 변환을 할 수 있게되었습니다.
그런데 문제가, 직업을 A로 바꾼 다음 다시 B로 바꾸면 B가 표시가 안되고, 적용도 안된다는 겁니다.
맵을 나갔다가 돌아오면 되기는 하지만, 앞으로 만들 이벤트 중에
[주인공]의 직업이 [A]일 것 같은 조건을 달 이벤트가 있어서...... 던전 같은 데서 맵을 나갔다가 돌아올 수 는 없지 않습니까.
그래서 그 관련해서 조언부탁드립니다.
노 딜레이로 직업을 연속으로 바꾸는 방법 좀 알려주세요.
혹은 딜레이이기는 하지만 맵을 떠나지 않아도 되는 방법이라던가......
 

Comment '8'
  • ?

    module IMIR_Equip_Job
     
      JOB_LIST = {  #원래 액터의 직업
        1 => 1,     # 1번 액터, 에릭은 1번 직업, 전사
        2 => 2,
        3 => 3,
        4 => 4,
        5 => 5,
        6 => 6,
        7 => 7,
        8 => 8,
        9 => 9,
        10 => 10,
      } # 지우지 말것 ㅇㅅㅇ
     
    end

    #==============================================================================
    # ■ Game_Actor
    #------------------------------------------------------------------------------
    #  액터를 취급하는 클래스입니다.이 클래스는 Game_Actors 클래스($game_actors)
    # 의 내부에서 사용되어 Game_Party 클래스($game_party)로부터도 참조됩니다.
    #==============================================================================

    class Game_Actor < Game_Battler
    #--------------------------------------------------------------------------
    # ● 장비의 변경으로 인한 직업 변경
    #--------------------------------------------------------------------------
    def change_job_of_equip(slot_id, item)
    if item == nil # 장비 해제시
    if @equips[slot_id].object != nil # 장비가 장착중이었다면
    if @equips[slot_id].object.job_class != 0 # 장비가 직업용 장비라면
    # 원래 직업으로 체인지
    change_class(IMIR_Equip_Job::JOB_LIST[@actor_id], true)
    end
    end
    else # 장비 해제가 아니라면
    change_class(item.job_class, true) if item.job_class != 0
    end
    @hp = [mhp].max
    @mp = [mmp].max
    end

    #--------------------------------------------------------------------------
    # ● 장비의 변경
    # slot_id : 장비 슬롯 ID
    # item : 무기/방어구(nil 라면 장비 해제)
    #--------------------------------------------------------------------------
    def change_equip(slot_id, item)
    return unless trade_item_with_party(item, equips[slot_id])
    return if item && equip_slots[slot_id] != item.etype_id
    change_job_of_equip(slot_id, item)
    @equips[slot_id].object = item
    refresh
    end
    #--------------------------------------------------------------------------
    # ● 장비의 강제 변경
    # slot_id : 장비 슬롯 ID
    # item : 무기/방어구(nil 라면 장비 해제)
    #--------------------------------------------------------------------------
    def force_change_equip(slot_id, item)
    change_job_of_equip(slot_id, item)
    @equips[slot_id].object = item
    release_unequippable_items(false)
    refresh
    end
    #--------------------------------------------------------------------------
    # ● 장비할 수 없는 장비품을 제외한다
    # item_gain : 제외한 장비품을 파티에 되돌린다
    #--------------------------------------------------------------------------
    def release_unequippable_items(item_gain = true)
    @equips.each_with_index do |item, i|
    if !equippable?(item.object) || item.object.etype_id != equip_slots[i]
    trade_item_with_party(nil, item.object) if item_gain
    if item.object != nil
    if item.object.job_class != 0
    change_class(IMIR_Equip_Job::JOB_LIST[@actor_id], true)
    end
    end
    item.object = nil
    end
    end
    end
    #--------------------------------------------------------------------------
    # ● 장비의 파기
    # item : 파기하는 무기/방어구
    #--------------------------------------------------------------------------
    def discard_equip(item)
    slot_id = equips.index(item)
    if slot_id
    if @equips[slot_id].object.job_class != 0
    change_class(IMIR_Equip_Job::JOB_LIST[@actor_id], true)
    end
    @equips[slot_id].object = nil
    end
    end

    end

    class RPG::Weapon < RPG::EquipItem
    def job_class # 직업 적용 => <직업 n> n은 직업 id
    if @note =~ /<직업 (\d+)>/
    return [0, $1.to_i].max
    else
    return 0 # 안적으면 0으로 판단.
    end
    end
    end

    class RPG::Armor < RPG::EquipItem
    def job_class # 직업 적용 => <직업 n> n은 직업 id
    if @note =~ /<직업 (\d+)>/
    return [0, $1.to_i].max
    else
    return 0 # 안적으면 0으로 판단.
    end
    end
    end

    이 스크립트는 무기나 방어구의 메모란에 <직업 n>이라고 쓴 장비를 장착할 시
    n이 0이 아니면 n번째 직업으로 직업을 교체하는 스크립트 입니다. 이 장비를 장착해제할 시
    원래 직업으로 돌아갑니다.

    단, 대충 만들었기 때문에 이런 장비가 2개 이상이 되면 꼬일 수 있고
    직업의 개수를 초과하는 숫자를 메모란에 넣었을 때 에러가 날 수 있습니다.

    초반부의 JOB_LIST는 원래 액터의 직업을 설정하는 부분입니다. => 앞은 액터번호, 뒤는 직업번호입니다.

     

    P.S 글이 모두 앞쪽 정렬되어서 사용하시기 힘들 것 같아서 텍스트 파일 첨부합니다. 긁어서 잘 안되면 텍스트 파일의 것을 사용해보세요

  • ?
    clown1 2012.09.04 02:48
    어, 제가 원하는 게 맞기는 한데요.
    문제는 그런 아이템이 적어도 두, 세가지는 더 있게 될 것같다는 겁니다.
    주인공 풀파티4명이 전원 2가지 정도 직업을 가지고 있어야 되는 데다가
    레벨 업으로 스킬을 배우는 게 아니라 아이템에 스킬을 내장시킬 거라서요.....
    이런 식으로 직업을 변경하면
    LV.9 업 할 떄 배웠어야 하는 스킬을 LV 10되서 장비바꿨다고 못얻을 수 있지 않나요?
  • ?
    아이미르 2012.09.04 06:42
    꼬일 수 있다고 한 건 이런 장비를 한번에 두 개 이상 장비했을 경우를 가리킨 겁니다 위에서 두 개 이상의 장비라는 게 두 개 이상 장비를 장착 했을 때를 말한 거고요.

    두번째는 물론입니다 해결책은 나중에 생각해보도록 하죠;; 혹은 다른 분에게 넘기거나요 ㅎㅅㅎ;
  • ?
    clown1 2012.09.04 02:49
    어, 제가 원하는 게 맞기는 한데요.
    문제는 그런 아이템이 적어도 두, 세가지는 더 있게 될 것같다는 겁니다.
    주인공 풀파티4명이 전원 2가지 정도 직업을 가지고 있어야 되는 데다가
    레벨 업으로 스킬을 배우는 게 아니라 아이템에 스킬을 내장시킬 거라서요.....
    이런 식으로 직업을 변경하면
    LV.9 업 할 떄 배웠어야 하는 스킬을 LV 10되서 장비바꿨다고 못얻을 수 있지 않나요?
  • ?
    module IMIR_Equip_Job

    JOB_LIST = { #원래 액터의 직업
    1 => 1, # 1번 액터, 에릭은 1번 직업, 전사
    2 => 2,
    3 => 3,
    4 => 4,
    5 => 5,
    6 => 6,
    7 => 7,
    8 => 8,
    9 => 9,
    10 => 10,
    } # 지우지 말것 ㅇㅅㅇ

    end


    #==============================================================================
    # ■ Game_Actor
    #------------------------------------------------------------------------------
    #  액터를 취급하는 클래스입니다.이 클래스는 Game_Actors 클래스($game_actors)
    # 의 내부에서 사용되어 Game_Party 클래스($game_party)로부터도 참조됩니다.
    #==============================================================================

    class Game_Actor < Game_Battler
    #--------------------------------------------------------------------------
    # ● 장비의 변경으로 인한 직업 변경
    #--------------------------------------------------------------------------
    def change_job_of_equip(slot_id, item)
    if item == nil # 장비 해제시
    if @equips[slot_id].object != nil # 장비가 장착중이었다면
    if @equips[slot_id].object.job_class != 0 # 장비가 직업용 장비라면
    # 원래 직업으로 체인지
    change_class(IMIR_Equip_Job::JOB_LIST[@actor_id], true)
    end
    end
    else # 장비 해제가 아니라면
    change_class(item.job_class, true) if item.job_class != 0
    end
    @hp = [mhp].max
    @mp = [mmp].max
    self.class.learnings.each { |learning|
    learn_skill(learning.skill_id) if @level >= learning.level
    }
    end

    #--------------------------------------------------------------------------
    # ● 장비의 변경
    # slot_id : 장비 슬롯 ID
    # item : 무기/방어구(nil 라면 장비 해제)
    #--------------------------------------------------------------------------
    def change_equip(slot_id, item)
    return unless trade_item_with_party(item, equips[slot_id])
    return if item && equip_slots[slot_id] != item.etype_id
    change_job_of_equip(slot_id, item)
    @equips[slot_id].object = item
    refresh
    end
    #--------------------------------------------------------------------------
    # ● 장비의 강제 변경
    # slot_id : 장비 슬롯 ID
    # item : 무기/방어구(nil 라면 장비 해제)
    #--------------------------------------------------------------------------
    def force_change_equip(slot_id, item)
    change_job_of_equip(slot_id, item)
    @equips[slot_id].object = item
    release_unequippable_items(false)
    refresh
    end
    #--------------------------------------------------------------------------
    # ● 장비할 수 없는 장비품을 제외한다
    # item_gain : 제외한 장비품을 파티에 되돌린다
    #--------------------------------------------------------------------------
    def release_unequippable_items(item_gain = true)
    @equips.each_with_index do |item, i|
    if !equippable?(item.object) || item.object.etype_id != equip_slots[i]
    trade_item_with_party(nil, item.object) if item_gain
    if item.object != nil
    if item.object.job_class != 0
    change_class(IMIR_Equip_Job::JOB_LIST[@actor_id], true)
    self.class.learnings.each { |learning|
    learn_skill(learning.skill_id) if @level >= learning.level
    }
    end
    end
    item.object = nil
    end
    end
    end
    #--------------------------------------------------------------------------
    # ● 장비의 파기
    # item : 파기하는 무기/방어구
    #--------------------------------------------------------------------------
    def discard_equip(item)
    slot_id = equips.index(item)
    if slot_id
    if @equips[slot_id].object.job_class != 0
    change_class(IMIR_Equip_Job::JOB_LIST[@actor_id], true)
    self.class.learnings.each { |learning|
    learn_skill(learning.skill_id) if @level >= learning.level
    }
    end
    @equips[slot_id].object = nil
    end
    end

    end

    class RPG::Weapon < RPG::EquipItem
    def job_class # 직업 적용 => <직업 n> n은 직업 id
    if @note =~ /<직업 (\d+)>/
    return [0, $1.to_i].max
    else
    return 0 # 안적으면 0으로 판단.
    end
    end
    end

    class RPG::Armor < RPG::EquipItem
    def job_class # 직업 적용 => <직업 n> n은 직업 id
    if @note =~ /<직업 (\d+)>/
    return [0, $1.to_i].max
    else
    return 0 # 안적으면 0으로 판단.
    end
    end
    end

    약간 더 추가했습니다.

    직업이 바뀌면 지금 레벨 이전에 배워야 될 스킬들을 배우게 됩니다.
  • ?
    clown1 2012.09.04 23:07
    한글로 된 파트에 직업명 넣어야 합니까, 아니면 직업 번호명을 넣어야 합니까?
    그리고 성실한 답변 감사드립니다. 이게 지금 만드는 게임의 핵심이라서......
  • ?
    아이미르 2012.09.05 00:06
    음 한글로 된 파트가 어디 가리키는 지 잘 모르겠네요 하지만 모듈 부분이든 장비의 메모란이든 양쪽다 직업 ID(직업 번호명이라고 해도 무방하겠네요) 를 넣게 되어있으니 직업 번호를 넣으면 될겁니다

    모듈 부분에는 액터번호 => 직업번호, 이런삭으로 추가하시고(마지막에 있는 }와 직업번호 뒤의 , 를 빼먹음 안됩니다)
    장비의 메모란에는 <직업 n> 이런식으로 써넣으면 됩니다

    예를 들면 장비 장착하면 2번 직업으로 변경하게 하고 싶으면 <직업 2>라고 메모란에 넣는 거에요
  • ?
    clown1 2012.09.05 05:14
    감사합니다.

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12460
사이트 이용 어떡하면 일반회원에서 올라갈 수 있나요? 현준갓 2017.04.30 161
RMVXA 상점의 처리 무기 방어구들의 능력치 표시에 대한 질문 1 겜맨602 2017.05.01 82
RMVXA 속성내성 중첩에 관해 질문드립니다! 2 보드카짱 2017.05.02 118
RMVXA 게임제작시 오마케제작 방법 알려주세요 1 고묘아 2017.05.02 179
RMMV 퀴즈 게임에서 문제 순서를 무작위로 하고 싶습니다. 4 유노 2017.05.02 260
기타 주인공 일러스트 하나 보수 드리려면 얼마가 적당한가요? 3 후라이팬샷 2017.05.03 179
RMMV 숫자타일과 피해바닥에 관해 작성한 팁글이 있나요? 4 잠행인 2017.05.03 132
RMMV 전투 종료시 아이템 삭제 2 file 리팝이 2017.05.03 207
RMMV MV 리소스 가져다쓰면 짤리는데 1 file 잠행인 2017.05.03 164
RMMV rpg메이커 vx ace 타일을 rpg메이커 mv에서 쓰는법좀 알려주세요 2 초보주의 2017.05.04 472
RMVXA 버프 관련 스크립트 질문드립니다 MMM 2017.05.04 101
RMMV 캐릭터 만들기 9 file 배고픈 2017.05.05 1042
RMMV 커스텀 캐릭터 어떻게 만들어요? 5 하민짱 2017.05.05 230
툴선택 RPG 만들기 툴 중에서 가장 범용적으로 쓰이는 것은 어떤 것인가요? 2 싸구려커피 2017.05.06 772
RMMV 전투 시 문제... 6 file 지혈이 2017.05.06 175
RMMV 맵 자르기 안되나요? 1 배고픈 2017.05.06 145
RMVXA 이벤트 접촉 시 데미지 처리 시스템 17 수프림 2017.05.07 395
RMVXA 아이템 설명 메뉴 스크립트 (Crazyninjaguy)를 썼는데, 아이템 이미지를 어떻게 넣나요? 2 file 개보쌈 2017.05.07 240
RMMV 랜덤한 효과를 즉시 발동시키거나 일반 공격에 부여하는 방법 3 DogeMadness 2017.05.07 158
툴선택 함께 전투에 임할 수 있는 캐릭이 4개까지만 인가요? 3 자유와바람 2017.05.07 222
Board Pagination Prev 1 ... 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 ... 517 Next
/ 517