;-----------------------------------------------
@CHARA_INFO
#DIM TMP_TARGET
#DIM SORT_SELECT

#DIM PAGE
#DIM MAXPAGE
;-----------------------------------------------
;キャラ情報一覧の処理。ここ→個別キャラ→コマンドと選択していく。
;関数USERSHOPからで呼ばれる。
;リターン1すると戻った先でターン終了する。


;보일 페이지 수, 최대 페이지 수
PAGE = 1
MAXPAGE = CHARANUM/20 + 1




SORT_SELECT = 103

$SELECT_LOOP

;キャラの一覧表示

IF SORT_SELECT == 103
        CALL SHOW_CHARA_INFO_LIST, PAGE
ELSEIF SORT_SELECT == 104
        CALL SHOW_CHARA_MONEY_LIST
ELSEIF SORT_SELECT == 105
        CALL SHOW_CHARA_DEBT_LIST
ELSE
        CALL SHOW_CHARA_INFO_LIST
ENDIF
PRINTL [100] 돌아온다 [101] 이전페이지 [102] 다음페이지 [103] 번호순 [104] 소지금순 [105] 부채순
DRAWLINE

;入力
$INPUT_LOOP3
INPUT

IF RESULT == 101
        PAGE -=1
        IF PAGE == 0
                PAGE = MAXPAGE
        ENDIF


        GOTO SELECT_LOOP
ELSEIF RESULT == 102
        PAGE +=1
        IF PAGE > MAXPAGE
                PAGE = 1
        ENDIF


        GOTO SELECT_LOOP
ELSEIF RESULT > 102 && RESULT < 106
        ;ランキング入力の場合、並び直して再表示
        SORT_SELECT = RESULT
        PAGE = 1
        GOTO SELECT_LOOP
;無効な入力を弾く
ELSEIF (RESULT < 0 || RESULT >= CHARANUM) && (RESULT != 100)
        GOTO INPUT_LOOP3
ENDIF

;有効な入力
IF RESULT == 100
        ;돌아온다
        RETURN 0
ELSE
        ;個別情報表示へ
        CALL CHARA_INFO_INDIVIDUAL(RESULT)
        IF RESULT == 1
                ;もし1が返って来たらターン終了の目印
                ;그외は再び一覧表示する
                RETURN 1
        ENDIF
ENDIF
RESTART

;-----------------------------------------------
@SHOW_CHARA_INFO_LIST, ARG:0
#DIM MAX_NUM_LEN = 0
#DIM MAX_NAME_LEN = 0
#DIM MAX_LV_LEN = 0
#DIM MAX_ATK_LEN = 0
#DIM MAX_DEF_LEN = 0

#DIM PAGE
;-----------------------------------------------
;存在するキャラの一覧表示
;全員出してるので表示人数は{CHARANUM}人となる

;キャラの番号、名前の文字数、レベル、攻撃、防御の最大桁数をそれぞれ取得
MAX_NUM_LEN = STRLENS(TOSTR(CHARANUM));番号
FOR COUNT, 0, CHARANUM
        MAX_NAME_LEN = MAX(STRLENS(SAVESTR:COUNT), MAX_NAME_LEN);名前
        MAX_LV_LEN = MAX(STRLENS(TOSTR(CFLAG:COUNT:9)), MAX_LV_LEN);レベル
        MAX_ATK_LEN = MAX(STRLENS(TOSTR(CFLAG:COUNT:13)), MAX_ATK_LEN);攻撃
        MAX_DEF_LEN = MAX (STRLENS(TOSTR(CFLAG:COUNT:14)), MAX_DEF_LEN);防御
NEXT

;1列ずつ表示
;まおーさま
PRINTFORML %\"[0]\", MAX_NUM_LEN+2, RIGHT%      %NAME:0, MAX_NAME_LEN,LEFT% {CFLAG:0:9, MAX_LV_LEN,RIGHT}LV
;他の人たち


;현재 페이지 수
PAGE = ARG:0


FOR COUNT, (PAGE-1)*20 + 1, MIN(PAGE*20+1, CHARANUM)
        ;番号
        LOCALS = [{COUNT}]
        PRINTFORM %LOCALS, MAX_NUM_LEN + 2, RIGHT%
        ;行動状態
        CALL SHOW_CHARA_ACT(COUNT)
        ;名前、レベル
        PRINTFORM  %SAVESTR:COUNT,MAX_NAME_LEN,LEFT% {CFLAG:COUNT:9,MAX_LV_LEN,RIGHT}LV

        ;攻撃力/防御力、カルマ
        PRINTFORM  공격{CFLAG:COUNT:13,MAX_ATK_LEN,LEFT}/방어{CFLAG:COUNT:14,MAX_DEF_LEN,LEFT} 카르마{CFLAG:COUNT:151,4,RIGHT}
        ;体力・気力バー
        PRINTFORM  HP%BARSTR(BASE:COUNT:0,MAXBASE:COUNT:0,8)% 기력%BARSTR(BASE:COUNT:1,MAXBASE:COUNT:1,8)%
        ;애정、음란
        IF TALENT:COUNT:애정
                SETCOLOR 255,100,100
                PRINT <애정>
                RESETCOLOR
        ELSEIF TALENT:COUNT:음란
                SETCOLOR 255,100,100
                PRINT <음란>
                RESETCOLOR
        ELSE
                SETCOLOR 100,100,100
                PRINT <미함락>
                RESETCOLOR
        ENDIF
        ;パーティフラグ
        ;パーティメンバー
        IF CFLAG:COUNT:533 > 0 && CFLAG:COUNT:531 == 0 && CFLAG:COUNT:532 == 0 && CFLAG:COUNT:533 != COUNT
                SETCOLOR 255,100,100
                PRINTFORM  PM<{CFLAG:COUNT:533}>
                RESETCOLOR
        ;パーティリーダー
        ELSEIF CFLAG:COUNT:533 > 0
                SETCOLOR 255,100,100
                PRINTFORM  PL<{CFLAG:COUNT:533}>
                RESETCOLOR
        ENDIF
        ;帰還フラグ
        IF CFLAG:COUNT:507 == 1
                SETCOLOR 200,200,100
                PRINTFORM 《귀환중》
                RESETCOLOR
        ENDIF
        ;お気に入り
        IF CFLAG:COUNT:700
                PRINTFORM [☆]
        ENDIF
        PRINTL
NEXT





원본 코드랑 비교해서 보삼

근데 for 구문에서 최대값 숫자는 스킵하네 ㅋ
그럼 CHARANUM도 당신 포함한 수겠구만

아무튼 저런 요령으로 하면 되고 번호순은 저대로 두면 잘 작동함
마지막 페이지에서 다음 페이지로 가면 1쪽으로 돌아가게끔 해놨음 더 이상 못가게 짜기 귀찮아서

소지금순과 부채순은 먼저 각각 해당 팩터로 정렬을 한 다음에 그 순서대로 출력하는 식임

따라서 쟤들을 똑같이 적용한 다음에 이전페이지 나 다음페이지를 누르게 되면 그 때마다 정렬 알고리즘이 매번 새로 돌아감
별 거 아니라고 생각할 수도 있는데 나는 찝찝해서 일단 번호순만 적용한 거 올림

저 정렬을 페이지 바꿀 때마다 매번 하지 않게 하려면 정렬을 CHARA_INFO 함수에서 하게 해서 그 배열을 받아서 쓰게끔 하는게 맞을 것 같음


추가로 궁금한 거 있으면 물어보삼

덤으로 에라에 기본으로 내장된 정렬해주는 함수 같은거 없음?