질문과 답변

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
RMVXA 메뉴에서 파티원 선택 없애기 4 file 따싯 2013.07.09 1032
RMVXA 메뉴의 '아이템'을 바꿀수 있는 방법이 있나요 4 전파개구리 2014.01.10 761
스크립트 작성 RMVXA 메뉴의 Continue와 Exit의 스크립트 질문 4 해비 2021.11.28 174
기타 RMVXA 메뉴의 hp 게이지를 삭제하고 싶습니다 1 file 은예림 2021.03.27 131
RMVXA 메뉴창 목록에서 파티 멤버 투명화를 없앨 수 있을까요? 2 크레페 2013.07.22 667
RMVXA 메뉴창 커맨드로 장소이동(또는 커먼이벤트 실행) 2 난현이라는 2012.12.22 1148
스크립트 작성 RMVXA 메뉴창에서 메뉴를 선택했을 때 원래 메뉴 목록이 사라지지 않게하려면 어떻게해야할까요 무명유실 2019.11.12 58
RMVXA 메뉴창에서 아이템갯수랑 골드 표시 2 file 진하 2013.10.22 1522
RMVXA 메뉴창에서 캐릭터 이름 옆에 표기되는 걸 직업이 아닌 칭호로 바꾸고 싶습니다. file 나라시 2016.04.09 221
RMVXA 메뉴창에서 커맨드를 선택해 결정키를 작동시키는 방법(해결됨) 1 file 안나카레리나 2018.07.02 198
RMVXA 메뉴창을 띄우면 캐릭터 이름 옆에 직업이 뜨는 걸 칭호로 바꾸고 싶습니다. 나라시 2016.04.15 113
RMVXA 메뉴창을 직접 디자인하기 7 흰강아지 2014.04.20 1001
RMVXA 메뉴창의 창 추가 및 커먼이벤트 실행과 제거 3 me친 2014.02.11 773
RMVXA 메뉴창이나 장비선택창 등에서 바로 필드 상태로 돌아오는 방법 1 밥_짓는_남자 2015.05.10 251
RMVXA 메뉴화면 이미지(배경화면) 띄우기에 대해서... LOOK 2015.11.09 478
RMVXA 메뉴화면 처럼 멈추게 하는 방법 2 구륨 2013.11.12 896
RMVXA 메뉴화면의 윈도우 창 없애기 2 라노스 2014.11.13 618
기본툴 사용법 RMVXA 메모의 기능? 1 겜만들고싶다앙 2020.10.24 317
RMVXA 메세지 대사 가운데 정렬 질문입니다 3 file 인아 2014.04.15 1196
RMVXA 메세지 윈도우 창을 투명하게 하는 방법 1 file Artria 2015.02.21 431
Board Pagination Prev 1 ... 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 ... 150 Next
/ 150