질문과 답변

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 12451
RMVX 안녕하세요 변수관련 질문이 있습니다. 1 김기말 2012.05.15 2220
RMVX 대화넣을때 /G 4 file 진서월 2012.05.15 2402
RMXP 조건분기 사용법 질문인데요, 제목으로 설명하기가 애매하네요.. 9 랄랄랅 2012.05.13 2417
RMVXA 스크립트 한글 글꼴 바꾸기 10 FreeRose 2012.05.13 4376
RMVXA 메뉴에서 장비창 없애기.. 9 FreeRose 2012.05.13 2180
RMVXA 캐릭터가 걸을때마다 발소리가 나는 스크립트나 이벤트는 없을까요? 2 하악하악 2세 2012.05.12 3416
RMVXA RPGVXACE 전투스크립트 궁금증이있습니다. 2 moopu 2012.05.12 4347
RM2k3 2003에서 faceset을 그림판으로 직접 만들어 넣었는데 까맣게 나와요. 4 file germ 2012.05.12 2499
RMXP 스킬 추가, 제거를 스크립트로 할수있나요? 얼정 2012.05.12 1619
RMVX SRPG 스크립트를 쓰는데 편성화면 뜨기전에 오류납니다. file 잡초더미 2012.05.10 2517
RMVXA ACE 에서 타일 이동관련 문제입니다. 베리☆ 2012.05.09 2832
RMVXA 이벤트 병렬처리후 케릭터 이동 관련 질문 2 일류 2012.05.09 2832
기타 우수게임 평가단 or 게임 평가 자격을 얻고 싶습니다. 카로 2012.05.08 3079
RMVXA 심플맵이 적용이안됩니다 1 펭귄꼬리 2012.05.07 3419
기타 RPG XP, VX, VXA 스크립트(Script) 만들려면 어떤 공부를 해야하나요? 1 Tattoo 2012.05.06 2947
RMXP 자신이 만든게임 다른사람이 수정못하게 하는 방법 1 나폴루 2012.05.06 2573
RMVX 말풍선 효과 스크립트 오류 1 file 아브렐라 2012.05.06 886
RMVX KGC드랍아이템확장스크립트 질문요..ㅠ 3 반내림 2012.05.06 2381
기타 이미지 원본을 도트화시킬 때 어떻게 하나요? 2 stonesoup 2012.05.04 4792
기타 일판 쯔꾸르 게임을 한글화 가능할까요? 8 powerguyner 2012.05.04 5442
Board Pagination Prev 1 ... 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 ... 516 Next
/ 516