{$VERSION 3.1.0023}
{$CLEO .cs}

{
 Skin Selector
  by Ryosuke
  http://gtasamod.web.fc2.com/
}

const
// 萔 
// ̒lύXۂ̧ٖؽĂύX邱 
MAX_NORMAL_SKIN  = 288  // ʏݐ - 1 
MAX_SPECIAL_SKIN =  31  // ʽݐ - 1 
MAX_ADDON_SKIN   = 255  // ǉݐ - 1
MAX_SPAWN_ACTORS =  63  // ol̍őL - 1
ACTOR_EMPTY  = 0xFFFFFFFF       // l݂ȂƂ̒l
SKIN_ARCHIVE = "CLEO\SKIN.IMG"  // ݂̊i[ꂽ.imģ 
end

{
 ϐ
  0@ رڽ
  1@ ؒl
  2@ ݂̽
  3@ ƭ̒ʏ
  4@ ƭ̓ʽ
  5@ ƭ̒ǉ
 
  6@ 
  7@ ID 

  8@ ݎ 
  9@ ID

 10@ gp 
 11@ gp 
 12@ gp 
 13@ gp 

 14@ ̎b
 15@ ؗ

 16@ ٰ
 17@ ٰ

 18@ 1
 19@ 1
 20@ 1
 21@ 1
 22@ 1
 23@ 1

 24@ 2
 25@ 2
 26@ 2
 27@ 2
 28@ 2
 29@ 2

 30@ 1 
 31@ 2
 
 32@ ϰ 
 33@ ϰ 
}


//================
// Ă 
//================

thread 'SKIN_C' 
0ABA: end_custom_thread_named 'SKIN'
0ABA: end_custom_thread_named 'SKIN_N'
0ABA: end_custom_thread_named 'SKIN_O'

0A95: enable_thread_saving  // گނ̕ۑL
0006: 8@ = 0
0006: 9@ = #NULL

:SKIN_INIT
wait 0
if
03D9:   save_done 
jf @SKIN_INIT
if
0039:   8@ == 3
then
    gosub @GET_ADDRESS
    000E: 0@ -= @TEMP_MEMORY
    for 17@ = 0 to 4
        0A8C: write_memory 0@ size 4 value 24@(17@,6i) virtual_protect 0
        000A: 0@ += 4
    end
end


//=============
// ؽĂ̏ 
//=============

// ʏ 
gosub @GET_ADDRESS
000E: 0@ -= @LIST_SKIN_NORMAL
for 16@ = 0 to MAX_NORMAL_SKIN
    for 17@ = 0 to 7
        // ްްNULLɒu 
        0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
        if
        0039:   1@ == 0x5F
        then
            0A8C: write_memory 0@ size 1 value 0x00 virtual_protect 0
        end
        000A: 0@ += 1
    end
end

// ʽ 
gosub @GET_ADDRESS
000E: 0@ -= @LIST_SPECIAL
for 16@ = 0 to MAX_SPECIAL_SKIN
    for 17@ = 0 to 7
        // ްްNULLɒu 
        0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
        if
        0039:   1@ == 0x5F
        then
            0A8C: write_memory 0@ size 1 value 0x00 virtual_protect 0
        end
        000A: 0@ += 1
    end
end

// ǉ 
gosub @GET_ADDRESS
000E: 0@ -= @LIST_ADDON
for 16@ = 0 to MAX_ADDON_SKIN
    for 17@ = 0 to 4
        // NULLŖ߂ 
        0A8C: write_memory 0@ size 4 value 0x00000000 virtual_protect 0
        000A: 0@ += 4
    end
end


//================================
// skin.imgǉ݂ؽĂ𐶐 
//================================

0A99: chdir 0  // ިڸ؂ݒ

if
8AAB:  not file_exists SKIN_ARCHIVE  // skin.img݂͑邩?
then
    // skin.imgȂꍇ 
    gosub @GET_ADDRESS
    000E: 0@ -= @TEXT_FILE_NOT_FOUND
    gosub @SHOW_TEXT_BOX
    0006: 2@ = -1
    0006: 3@ = 0
    0006: 4@ = 0
    0006: 5@ = 0
    jump @SKIN_MAIN
end

if
8A9A:  not 30@ = openfile SKIN_ARCHIVE mode 0x6272  // IF and SET  // skin.imgJĂ݂
then
    // skin.imgJȂꍇ 
    gosub @GET_ADDRESS
    000E: 0@ -= @TEXT_FILE_CANT_READ
    gosub @SHOW_TEXT_BOX
    0006: 2@ = -1
    0006: 3@ = 0
    0006: 4@ = 0
    0006: 5@ = 0
    jump @SKIN_MAIN
end
 
0A9D: readfile 30@ size 4 to 1@  // .imgͯ ްޮݏ "VER2"  
0A9D: readfile 30@ size 4 to 3@  // .imgͯ i[ِ̧ 4޲ 3@֊i[

0006: 2@ = 0
while true
    0A9D: readfile 30@ size 4 to 1@  // .imgͯ ُ̧ ̧وʒu 4޲  
    0A9D: readfile 30@ size 4 to 1@  // .imgͯ ُ̧ ̧ٻ 4޲  
     
    0A9D: readfile 30@ size 24 to 24@  // .imgͯ ُ̧ ̧ٖ 24޲ 24@-29@֊i[

    // ̧ٖ啶ɕϊ 
    0A9F: 0@ = current_thread_pointer
    000A: 0@ += 0xB3  // گޏ񒆂29@̱ڽ
    for 16@ = 0 to 23
        0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
        if and
        0019:   1@ > 0x60 
        001B:   0x7B > 1@ 
        then
            000A: 1@ += -0x20
            0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
        end
        000A: 0@ += -1
    end

    // gq̒u 납T 
    0A9F: 0@ = current_thread_pointer
    000A: 0@ += 0xB3  // گޏ񒆂29@̱ڽ 
    for 16@ = 0 to 23
        0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
        if
        // 񒆂.DFF.TXDɒu 
        0039:   1@ == 0x4646442E
        then
            0A8C: write_memory 0@ size 4 value 0x4458542E virtual_protect 0
            break
        end
        // 񒆂.TXD.DFFɒu 
        if
        0039:   1@ == 0x4458542E
        then
            0A8C: write_memory 0@ size 4 value 0x4646442E virtual_protect 0
            break
        end
        000A: 0@ += -1
    end

    if
    8039:   not 16@ == 23  //.DFF܂.TXDٰ߂fꂽ? 
    then
        // ΂ɂȂĂ.DFF܂.TXDT 
        if
        8A9A: not 31@ = openfile SKIN_ARCHIVE mode 0x6272  // IF and SET  // skin.imgJĂ݂
        then
            // skin.imgJȂꍇ 
            gosub @GET_ADDRESS
            000E: 0@ -= @TEXT_FILE_CANT_READ
            gosub @SHOW_TEXT_BOX
            0A9B: closefile 30@
            0006: 2@ = -1
            0006: 3@ = 0
            0006: 4@ = 0
            0006: 5@ = 0
            jump @SKIN_MAIN
        end
        0A9D: readfile 31@ size 4 to 1@  // .imgͯ ްޮݏ "VER2" 
        0A9D: readfile 31@ size 4 to 1@  // .imgͯ i[ِ̧ 4޲ 
        0006: 16@ = -1

        // ݒTĂʒu܂Ői߂ 
        while true
            if
            002D:   16@ >= 2@ // (int) 
            then
                break
            end
            // 1̧ٕ̏ 32޲      
            0A9D: readfile 31@ size 4 to 1@ 
            0A9D: readfile 31@ size 4 to 1@ 
            0A9D: readfile 31@ size 4 to 1@ 
            0A9D: readfile 31@ size 4 to 1@ 
            0A9D: readfile 31@ size 4 to 1@ 
            0A9D: readfile 31@ size 4 to 1@ 
            0A9D: readfile 31@ size 4 to 1@ 
            0A9D: readfile 31@ size 4 to 1@ 
            000A: 16@ += 1
        end

        while true
            0A9D: readfile 31@ size 4 to 1@  // .imgͯ ُ̧ ̧وʒu 4޲ 
            0A9D: readfile 31@ size 4 to 1@  // .imgͯ ُ̧ ̧ٻ 4޲ 

            0A9D: readfile 31@ size 24 to 18@  // .imgͯ ُ̧ ̧ٖ 24޲ 18@-23@֊i[ 

            // ̧ٖ啶ɕϊ 
            0A9F: 0@ = current_thread_pointer
            000A: 0@ += 0x9B  // گޏ񒆂23@̱ڽ
            for 17@ = 0 to 23
                0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
                if and
                0019:   1@ > 0x60 
                001B:   0x7B > 1@ 
                then
                    000A: 1@ += -0x20
                    0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
                end
                000A: 0@ += -1
            end

            // ̧ٖv邩 
            if and
            003B:   18@ == 24@ // (int)
            003B:   19@ == 25@ // (int)
            003B:   20@ == 26@ // (int)
            003B:   21@ == 27@ // (int)
            003B:   22@ == 28@ // (int)
            003B:   23@ == 29@ // (int)
            then
                // gq폜 
                0A9F: 0@ = current_thread_pointer
                000A: 0@ += 0xB3  // گޏ񒆂29@̱ڽ
                for 17@ = 0 to 23
                    0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
                    if
                    0039:   1@ == 0x2E
                    then
                        0A8C: write_memory 0@ size 4 value 0x00000000 virtual_protect 0
                        break
                    end
                    000A: 0@ += -1
                end

                // ǉؽĂ֓o^    
                gosub @GET_ADDRESS
                000E: 0@ -= @LIST_ADDON
                for 17@ = 0 to MAX_ADDON_SKIN
                    0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
                    if
                    0039:   1@ == 0x00  // 󂢂Ă邩? 
                    then
                        0A8C: write_memory 0@ size 4 value 24@ virtual_protect 0
                        000A: 0@ += 4
                        0A8C: write_memory 0@ size 4 value 25@ virtual_protect 0
                        000A: 0@ += 4
                        0A8C: write_memory 0@ size 4 value 26@ virtual_protect 0
                        000A: 0@ += 4
                        0A8C: write_memory 0@ size 4 value 27@ virtual_protect 0
                        000A: 0@ += 4
                        0A8C: write_memory 0@ size 4 value 28@ virtual_protect 0
                        break
                    end
                    000A: 0@ += 20
                end
                break
            end 

            000A: 16@ += 1
            if
            002D:   16@ >= 3@ // (int)  //ُ̧̏I[܂ŗ? 
            then
                break
            end     
        end

        0A9B: closefile 31@  // ̧ق
    end

    000A: 2@ += 1
    if
    002D:   2@ >= 3@ // (int)  //ُ̧̏I[܂ŗ? 
    then
        break
    end 
end

0A9B: closefile 30@  // ̧ق 

// ϐ̏ 
0006: 2@ = -1
0006: 3@ = 0
0006: 4@ = 0
0006: 5@ = 0

// XL߂ 
wait 0
if
0039:   8@ == 3
then
    gosub @GET_ADDRESS
    000E: 0@ -= @TEMP_MEMORY
    for 17@ = 0 to 4
        0A8D: 24@(17@,6i) = read_memory 0@ size 4 virtual_protect 0
        000A: 0@ += 4
    end
    for 9@ = 0 to MAX_ADDON_SKIN
        gosub @GET_ADDRESS
        000E: 0@ -= @LIST_ADDON
        0085: 16@ = 9@ // (int) 
        0012: 16@ *= 20
        005A: 16@ += 0@ // (int) 
        for 17@ = 0 to 4
            0A8D: 18@(17@,6i) = read_memory 16@ size 4 virtual_protect 0
            000A: 16@ += 4
        end
        if
        0039:   18@ == 0x00000000
        then
            break
        end 
        if and
        003B:   18@ == 24@ // (int) 
        003B:   19@ == 25@ // (int) 
        003B:   20@ == 26@ // (int) 
        003B:   21@ == 27@ // (int) 
        003B:   22@ == 28@ // (int) 
        then
            jump @REST_BREAK
            break
        end
    end
    09C7: change_player $PLAYER_CHAR model_to #NULL 
    0006: 8@ = 0
    0006: 9@ = #NULL
end
:REST_BREAK
gosub @SKIN_REST


//=========
// Ҳٰ 
//=========

:SKIN_MAIN
wait 0

if
03D9:   save_done  // ނꂽꍇ,ؽĂ蒼 
jf @SKIN_INIT

if
0256:   player $PLAYER_CHAR defined  // ڲ԰ȂΖ 
jf @SKIN_MAIN

// ol̊Ǘ 
gosub @GET_ADDRESS
000E: 0@ -= @LIST_SPAWNED
for 17@ = 0 to MAX_SPAWN_ACTORS
    0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
    if
    056D:   actor 1@ defined  // ݂邩? 
    then
        if
        051A:   actor 1@ damaged_by_actor $PLAYER_ACTOR 
        then
            0223: set_actor 1@ health_to 0 
        end
        if or
        80F2:   not actor 1@ near_actor $PLAYER_ACTOR radius 100.0 100.0 0  // ֗ꂽ? 
        0118:   actor 1@ dead  // S? 
        then
            01C2: remove_references_to_actor 1@ // Like turning an actor into a random pedestrian 
            0A8C: write_memory 0@ size 4 value ACTOR_EMPTY virtual_protect 0
            continue
        end
        04DD: 16@ = actor 1@ armour 
        if
        0039:   16@ == 0
        then
            06AB: set_actor 1@ all_weapons_hidden 1 
            07CB: set_actor 1@ supporting_fire 0
            07DD: set_actor 1@ temper_to 75 // see pedstats.dat 
            0006: 16@ = 2
        else
            07CB: set_actor 1@ supporting_fire 1
            07DD: set_actor 1@ temper_to 25 // see pedstats.dat 
            0006: 16@ = 4
        end 
        077A: set_actor 1@ default_action 16@ to_actors_pedtype 6
        077A: set_actor 1@ default_action 16@ to_actors_pedtype 7
        077A: set_actor 1@ default_action 16@ to_actors_pedtype 9
        077A: set_actor 1@ default_action 16@ to_actors_pedtype 10
        077A: set_actor 1@ default_action 16@ to_actors_pedtype 11
        077A: set_actor 1@ default_action 16@ to_actors_pedtype 12
        077A: set_actor 1@ default_action 16@ to_actors_pedtype 13
        077A: set_actor 1@ default_action 16@ to_actors_pedtype 14
        077A: set_actor 1@ default_action 16@ to_actors_pedtype 17
        077A: set_actor 1@ default_action 16@ to_actors_pedtype 20
    end
    000A: 0@ += 4
end

// ر 
07B0: get_active_shop_name_to s$Current_Shop_GXT_Name // 8-byte string 
077E: get_active_interior_to $ACTIVE_INTERIOR 
if and
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'CSCHP'  // Binco
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'CSSPRT'  // Pro-Laps
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'LACS1'  // Sub Urban
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'CLOTHGP'  // Zip
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'CSDESGN'  // Victim
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'CSEXL'  // Didier Sachs
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'TATTOO'  // Tattoo Parlor
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'TATTO2'  // Tattoo Parlor
jf @SKIN_CJ
if and
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'TATTO3'  // Tattoo Parlor
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'BARBERS'  // Barber
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'BARBER2'  // Barber
85AD:   not  s$CURRENT_SHOP_GXT_NAME == 'BARBER3'  // Barber
8038:   not  $ACTIVE_INTERIOR == 14 
86B9:   not cutscene_data_loaded 
jf @SKIN_CJ 
:SKIN_RTRN

// ̌^Ă 
if
8039:   not 2@ == -1 
then
    0653: 16@ = float_stat 21
    if
    8045:   not 14@ == 16@ // (float) 
    then
        062A: change_float_stat 21 to 14@
    end 
    0653: 17@ = float_stat 23
    if
    8045:   not 15@ == 17@ // (float) 
    then
        062A: change_float_stat 23 to 15@
    end 
end 

gosub @SKIN_REST

// ݂ύXłԂ? 
if and
03EE:   player $PLAYER_CHAR controllable
80DF:   not actor $PLAYER_ACTOR driving 
8597:   not actor $PLAYER_ACTOR crouching 
8965:   not actor $PLAYER_ACTOR swimming 
jf @SKIN_MAIN 

//  
if or
80E1:   not player 0 pressed_key 4 
80E1:   not player 0 pressed_key 5 
jf @SKIN_PREV
if or
80E1:   not player 0 pressed_key 4 
80E1:   not player 0 pressed_key 7 
jf @SKIN_NEXT
jump @SKIN_MAIN

:SKIN_CJ
if or
8611:   not actor $PLAYER_ACTOR performing_animation "WALK_player" 
05AD:   s$CURRENT_SHOP_GXT_NAME == 'TATTOO'  // Tattoo Parlor
05AD:   s$CURRENT_SHOP_GXT_NAME == 'TATTO2'  // Tattoo Parlor
05AD:   s$CURRENT_SHOP_GXT_NAME == 'TATTO3'  // Tattoo Parlor
jf @SKIN_RTRN
if or
83EE:   not player $PLAYER_CHAR controllable
05AD:   s$CURRENT_SHOP_GXT_NAME == 'TATTOO'  // Tattoo Parlor
05AD:   s$CURRENT_SHOP_GXT_NAME == 'TATTO2'  // Tattoo Parlor
05AD:   s$CURRENT_SHOP_GXT_NAME == 'TATTO3'  // Tattoo Parlor
06B9:   cutscene_data_loaded 
jf @SKIN_RTRN
if
8039:   not 2@ == -1
jf @SKIN_MAIN
// CJɖ߂ 
09C7: change_player $PLAYER_CHAR model_to #NULL 
0006: 2@ = -1
jump @SKIN_MAIN

:SKIN_REST
if and
8039:   not  8@ == 0 
0039:   2@ == -1
0AA1: return_if_false
// CJ߂ 
if
0039:   8@ == 1
then
    gosub @GET_ADDRESS
    000E: 0@ -= @LIST_SKIN_NORMAL
    0085: 17@ = 9@ // (int) 
    0012: 17@ *= 8
    005A: 0@ += 17@ // (int) 
    0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
    if
    8039:   not 1@ == 0x00  // ̧ٖ̖͖̂ 
    then
        if
        0039:   2@ == -1 
        then
            0653: 14@ = float_stat 21 
            0653: 15@ = float_stat 23
        end 
        0006: 2@ = -2
        0085: 7@ = 9@ // (int) 
        gosub @ACTOR_CHANGE
    end
end
if
0039:   8@ == 2
then
    gosub @GET_ADDRESS
    000E: 0@ -= @LIST_SPECIAL
    0085: 16@ = 9@ // (int) 
    0012: 16@ *= 8
    005A: 16@ += 0@ // (int) 
    gosub @GET_ADDRESS
    000E: 0@ -= @SKIN_LOAD
    000A: 0@ += 6
    for 17@ = 0 to 7
        0A8D: 1@ = read_memory 16@ size 1 virtual_protect 0
        0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
        000A: 0@ += 1
        000A: 16@ += 1
        gosub @ACTOR_CHANGE
    end
    if
    0039:   2@ == -1 
    then
        0653: 14@ = float_stat 21 
        0653: 15@ = float_stat 23
    end 
    0006: 2@ = -2
    0006: 7@ = #SPECIAL10
    gosub @ACTOR_CHANGE
end
if
0039:   8@ == 3
then
    gosub @GET_ADDRESS
    000E: 0@ -= @LIST_ADDON
    0085: 16@ = 9@ // (int) 
    0012: 16@ *= 20
    005A: 16@ += 0@ // (int) 
    gosub @GET_ADDRESS
    000E: 0@ -= @SKIN_LOAD
    000A: 0@ += 6
    for 17@ = 0 to 19
        0A8D: 1@ = read_memory 16@ size 1 virtual_protect 0
        0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
        000A: 0@ += 1
        000A: 16@ += 1
    end
    if
    0039:   2@ == -1 
    then
        0653: 14@ = float_stat 21 
        0653: 15@ = float_stat 23
    end 
    0085: 2@ = 9@ // (int) 
    0006: 7@ = #SPECIAL10
    gosub @ACTOR_CHANGE
end
return

:SKIN_PREV
wait 0

// ƭJ 
if or
80E1:   not player 0 pressed_key 5 
80E1:   not player 0 pressed_key 7 
jf @SKIN_MENU

// O̽ 
if
80E1:   not player 0 pressed_key 5 
jf @SKIN_PREV
if
0039:   2@ == -1 
then
    0653: 14@ = float_stat 21 
    0653: 15@ = float_stat 23
end 
if
0039:   2@ == -2  // ƭIłꍇ 
then
    0006: 2@ = -1
else
    000A: 2@ += -1
end
if
001B:   -1 > 2@ 
then
    gosub @GET_ADDRESS
    000E: 0@ -= @LIST_ADDON
    for 16@ = 0 to MAX_ADDON_SKIN
        0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
        if
        0039:   1@ == 0x00
        then
            break
        end
        000A: 0@ += 20
    end
    000A: 16@ += -1
    0085: 2@ = 16@ // (int) 
end
if
8039:   not 2@ == -1 
then
    0085: 5@ = 2@ // (int) 
end 
jump @SKIN_6

:SKIN_NEXT
wait 0

// ƭJ 
if or
80E1:   not player 0 pressed_key 5 
80E1:   not player 0 pressed_key 7 
jf @SKIN_MENU

// ̽ 
if
80E1:   not player 0 pressed_key 7 
jf @SKIN_NEXT
if
0039:   2@ == -1 
then
    0653: 14@ = float_stat 21 
    0653: 15@ = float_stat 23
end 
if
0039:   2@ == -2  // ƭIłꍇ
then
    0006: 2@ = -1
else
    000A: 2@ += 1
end
gosub @GET_ADDRESS
000E: 0@ -= @LIST_ADDON
for 16@ = 0 to MAX_ADDON_SKIN
    0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
    if
    0039:   1@ == 0x00
    then
        break
    end
    000A: 0@ += 20
end
000A: 16@ += -1
if
001D:   2@ > 16@ // (int) 
then
    0006: 2@ = -1
end
if
8039:   not 2@ == -1 
then
    0085: 5@ = 2@ // (int) 
end 
jump @SKIN_6

:SKIN_6
if
0039:   2@ == -1
then
    0006: 8@ = 0
    09C7: change_player $PLAYER_CHAR model_to #NULL 
else
    0006: 8@ = 3
    0085: 9@ = 2@ // (int) 
    0653: 14@ = float_stat 21 
    0653: 15@ = float_stat 23
    gosub @GET_ADDRESS
    000E: 0@ -= @LIST_ADDON
    0085: 16@ = 2@ // (int) 
    0012: 16@ *= 20
    005A: 16@ += 0@ // (int) 
    gosub @GET_ADDRESS
    000E: 0@ -= @SKIN_LOAD
    000A: 0@ += 6
    for 17@ = 0 to 19
        0A8D: 1@ = read_memory 16@ size 1 virtual_protect 0
        0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
        000A: 0@ += 1
        000A: 16@ += 1
    end
    000A: 16@ += -20
    for 17@ = 0 to 4
        0A8D: 24@(17@,6i) = read_memory 16@ size 4 virtual_protect 0
        000A: 16@ += 4
    end
    gosub @SKIN_LOAD
    09C7: change_player $PLAYER_CHAR model_to #SPECIAL10 
    0296: unload_special_actor 10 
end 
jump @SKIN_MAIN


//========== 
// ƭ 
//==========

:SKIN_MENU
01B4: toggle_player $PLAYER_CHAR can_move 0 
04C4: store_coords_to 18@ 19@ 20@ from_actor $PLAYER_ACTOR with_offset -0.75 3.0 1.0 
015F: set_camera_position 18@ 19@ 20@ rotation 0.0 0.0 0.0 
04C4: store_coords_to 18@ 19@ 20@ from_actor $PLAYER_ACTOR with_offset 0.75 0.0 0.25
0160: set_camera_point_at 18@ 19@ 20@ mode 2 

// ƭ\ 
gosub @GET_ADDRESS
000E: 0@ -= @TEXT_SKIN_MENU
gosub @SHOW_TEXT_BOX
gosub @WRITE_TEXT_CLEAR

:SKIN_MLOOP
wait 0
0006: 32@ = 0
0006: 33@ = 0

// ʏ 
if
00E1:   player 0 pressed_key 17 
then
    gosub @KEY_WAIT
    gosub @WRITE_TEXT_NORMAL
    gosub @GET_ADDRESS
    000E: 0@ -= @TEXT_SKIN_LIST
    gosub @SHOW_TEXT_BOX
    jump @SKIN_NLOOP
end

// ʽ 
if
00E1:   player 0 pressed_key 14 
then
    gosub @KEY_WAIT
    gosub @WRITE_TEXT_SPECIAL
    gosub @GET_ADDRESS
    000E: 0@ -= @TEXT_SKIN_LIST
    gosub @SHOW_TEXT_BOX
    jump @SKIN_SLOOP
end

// ǉ 
if
00E1:   player 0 pressed_key 16 
then
    gosub @KEY_WAIT
    gosub @GET_ADDRESS
    000E: 0@ -= @LIST_ADDON
    for 23@ = 0 to MAX_ADDON_SKIN
        0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
        if
        0039:   1@ == 0x00
        then
            break
        end
        000A: 0@ += 20
    end
    gosub @WRITE_TEXT_ADDON
    gosub @GET_ADDRESS
    000E: 0@ -= @TEXT_SKIN_LIST
    gosub @SHOW_TEXT_BOX
    jump @SKIN_ALOOP
end

// 
if
00E1:   player 0 pressed_key 18 
then
    gosub @KEY_WAIT
    0512: show_permanent_text_box 'WARDH1'  // Use ~k~~GO_FORWARD~ and ~k~~GO_BACK~ to select a shop.~N~~k~~PED_SPRINT~ Select~N~~k~~VEHICLE_ENTER_EXIT~ Quit
    08D4: 23@ = create_panel_with_title 'CLOTCHO' position 29.0 145.0 width 186.0 columns 1 interactive 1 background 1 alignment 1  // Apparel
    08DB: set_panel 23@ column 0 header 'DUMMY' data 'SHOP1' 'SHOP2' 'SHOP3' 'SHOP4' 'SHOP5' 'SHOP6' 'SHOP7' 'REMCLT' 'BARBERS' 'BARBER2' 'BARBER3' 'DUMMY' 
    if
    8039:   not 2@ == -1
    jf @SKIN_CLOOP
    09C7: change_player $PLAYER_CHAR model_to #NULL 
    0006: 2@ = -1
    jump @SKIN_CLOOP
end

// ̌^
if
00E1:   player 0 pressed_key 19 
then
    gosub @KEY_WAIT
    0653: 20@ = float_stat 21 
    0653: 21@ = float_stat 23
    0092: 20@ = float 20@ to_integer 
    0092: 21@ = float 21@ to_integer 
    gosub @GET_ADDRESS
    000E: 0@ -= @TEXT_SKIN_SHAPE
    gosub @SHOW_TEXT_BOX
    08D4: 23@ = create_panel_with_title 'DUMMY' position 29.0 145.0 width 186.0 columns 2 interactive 1 background 1 alignment 1  // 
    08D6: set_panel 23@ column 0 alignment 1 
    08DB: set_panel 23@ column 0 header 'DUMMY' data 'STAT021' 'STAT023' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 
    08D6: set_panel 23@ column 1 alignment 2 
    08DB: set_panel 23@ column 1 header 'DUMMY' data 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 
    08EE: set_panel 23@ column 1 row 0 text_1number GXT 'NUMBER' number 20@  // ~1~
    08EE: set_panel 23@ column 1 row 1 text_1number GXT 'NUMBER' number 21@  // ~1~
    09DB: set_panel 23@ column 0 width 140 
    09DB: set_panel 23@ column 1 width 46 
    if
    8039:   not 2@ == -1
    jf @SKIN_FLOOP
    09C7: change_player $PLAYER_CHAR model_to #NULL 
    0006: 2@ = -1
    jump @SKIN_FLOOP
end

// ߂ 
if
00E1:   player 0 pressed_key 15 
jf @SKIN_MLOOP
while 00E1:   player 0 pressed_key 15
    wait 0
end
03E6: remove_text_box 
015A: restore_camera 
01B4: toggle_player $PLAYER_CHAR can_move 1 
0687: clear_actor $PLAYER_ACTOR task 
jump @SKIN_MAIN

// ʏ 
:SKIN_NLOOP
wait 0
gosub @GET_KEY
if
001D:   32@ > 22@ // (int) 
then
    0006: 32@ = 0
    if
    001B:   -64 > 21@ 
    then
        000A: 3@ += -1
    end
    if
    0019:   21@ > 64 
    then
        000A: 3@ += 1
    end
    if
    001B:   0 > 3@ 
    then
        0006: 3@ = 0
    end
    if
    0019:   3@ > MAX_NORMAL_SKIN
    then
        0006: 3@ = MAX_NORMAL_SKIN
    end
    gosub @WRITE_TEXT_CLEAR
    gosub @WRITE_TEXT_NORMAL
    gosub @GET_ADDRESS
    000E: 0@ -= @TEXT_SKIN_LIST
    gosub @SHOW_TEXT_BOX
end 
gosub @GET_ADDRESS
000E: 0@ -= @LIST_SKIN_NORMAL
0085: 17@ = 3@ // (int) 
0012: 17@ *= 8
005A: 0@ += 17@ // (int) 
0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
if and
00E1:   player 0 pressed_key 16
8039:   not 1@ == 0x00  // ̧ٖ̖͖̂ 
then
    018C: play_sound 1052 at 0.0 0.0 0.0 
    0006: 8@ = 1
    0085: 9@ = 3@ // (int) 
    if
    0039:   2@ == -1 
    then
        0653: 14@ = float_stat 21 
        0653: 15@ = float_stat 23
    end 
    0006: 2@ = -2
    0085: 7@ = 3@ // (int) 
    gosub @ACTOR_CHANGE
    gosub @KEY_WAIT
end
if and
00E1:   player 0 pressed_key 17 
8039:   not 1@ == 0x00  // ̧ٖ̖͖̂ 
then
    018C: play_sound 1052 at 0.0 0.0 0.0 
    0006: 6@ = 4
    0085: 7@ = 3@ // (int) 
    gosub @ACTOR_CREATE
    gosub @KEY_WAIT
end
if and
00E1:   player 0 pressed_key 14 
8039:   not 1@ == 0x00  // ̧ٖ̖͖̂ 
then
    018C: play_sound 1052 at 0.0 0.0 0.0 
    0006: 6@ = 2
    0085: 7@ = 3@ // (int) 
    gosub @ACTOR_CREATE
    gosub @KEY_WAIT
end
if
80E1:   not player 0 pressed_key 15 
jf @SKIN_BACK
jump @SKIN_NLOOP

// ʽ 
:SKIN_SLOOP
wait 0
gosub @GET_KEY
if
001D:   32@ > 22@ // (int) 
then
    0006: 32@ = 0
    if
    001B:   -64 > 21@ 
    then
        000A: 4@ += -1
    end
    if
    0019:   21@ > 64 
    then
        000A: 4@ += 1
    end
    if
    001B:   0 > 4@ 
    then
        0006: 4@ = 0
    end
    if
    0019:   4@ > MAX_SPECIAL_SKIN 
    then
        0006: 4@ = MAX_SPECIAL_SKIN
    end
    gosub @WRITE_TEXT_CLEAR
    gosub @WRITE_TEXT_SPECIAL
    gosub @GET_ADDRESS
    000E: 0@ -= @TEXT_SKIN_LIST
    gosub @SHOW_TEXT_BOX
end 
if or
00E1:   player 0 pressed_key 16
00E1:   player 0 pressed_key 17
00E1:   player 0 pressed_key 14
then
    gosub @GET_ADDRESS
    000E: 0@ -= @LIST_SPECIAL
    0085: 16@ = 4@ // (int) 
    0012: 16@ *= 8
    005A: 16@ += 0@ // (int) 
    gosub @GET_ADDRESS
    000E: 0@ -= @SKIN_LOAD
    000A: 0@ += 6
    for 17@ = 0 to 7
        0A8D: 1@ = read_memory 16@ size 1 virtual_protect 0
        0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
        000A: 0@ += 1
        000A: 16@ += 1
    end
    018C: play_sound 1052 at 0.0 0.0 0.0 
    if
    00E1:   player 0 pressed_key 16
    then
        0006: 8@ = 2
        0085: 9@ = 4@ // (int) 
        if
        0039:   2@ == -1 
        then
            0653: 14@ = float_stat 21 
            0653: 15@ = float_stat 23
        end 
        0006: 2@ = -2
        0006: 7@ = #SPECIAL10
        gosub @ACTOR_CHANGE
        gosub @KEY_WAIT
    end
    if
    00E1:   player 0 pressed_key 17 
    then
        0006: 6@ = 4
        0006: 7@ = #SPECIAL10
        gosub @ACTOR_CREATE
        gosub @KEY_WAIT
    end
    if
    00E1:   player 0 pressed_key 14 
    then
        0006: 6@ = 2
        0006: 7@ = #SPECIAL10
        gosub @ACTOR_CREATE
        gosub @KEY_WAIT
    end
end
if
80E1:   not player 0 pressed_key 15 
jf @SKIN_BACK
jump @SKIN_SLOOP

// ǉ 
:SKIN_ALOOP
wait 0
gosub @GET_KEY
if
001D:   32@ > 22@ // (int) 
then
    0006: 32@ = 0
    if
    001B:   -64 > 21@ 
    then
        000A: 5@ += -1
    end
    if
    0019:   21@ > 64 
    then
        000A: 5@ += 1
    end
    if
    001B:   0 > 5@ 
    then
        0006: 5@ = 0
    end
    gosub @GET_ADDRESS
    000E: 0@ -= @LIST_ADDON
    for 23@ = 0 to MAX_ADDON_SKIN
        0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
        if
        0039:   1@ == 0x00
        then
            break
        end
        000A: 0@ += 20
    end
    000A: 23@ += -1
    if
    0019:   5@ > 23@ 
    then
        0085: 5@ = 23@ // (int) 
    end
    gosub @GET_ADDRESS
    000E: 0@ -= @TEXT_SKIN_LIST
    000A: 0@ += 115
    gosub @WRITE_TEXT_CLEAR
    000A: 23@ += 1
    gosub @WRITE_TEXT_ADDON
    gosub @GET_ADDRESS
    000E: 0@ -= @TEXT_SKIN_LIST
    gosub @SHOW_TEXT_BOX
end 
if or
00E1:   player 0 pressed_key 16
00E1:   player 0 pressed_key 17
00E1:   player 0 pressed_key 14
then
    gosub @GET_ADDRESS
    000E: 0@ -= @LIST_ADDON
    0085: 16@ = 5@ // (int) 
    0012: 16@ *= 20
    005A: 16@ += 0@ // (int) 
    gosub @GET_ADDRESS
    000E: 0@ -= @SKIN_LOAD
    000A: 0@ += 6
    for 17@ = 0 to 19
        0A8D: 1@ = read_memory 16@ size 1 virtual_protect 0
        0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
        000A: 0@ += 1
        000A: 16@ += 1
    end
    018C: play_sound 1052 at 0.0 0.0 0.0 
    if
    00E1:   player 0 pressed_key 16
    then
        0006: 8@ = 3
        0085: 9@ = 5@ // (int) 
        000A: 16@ += -20
        for 17@ = 0 to 4
            0A8D: 24@(17@,6i) = read_memory 16@ size 4 virtual_protect 0
            000A: 16@ += 4
        end
        if
        0039:   2@ == -1 
        then
            0653: 14@ = float_stat 21 
            0653: 15@ = float_stat 23
        end 
        0085: 2@ = 5@ // (int) 
        0006: 7@ = #SPECIAL10
        gosub @ACTOR_CHANGE
        gosub @KEY_WAIT
    end
    if
    00E1:   player 0 pressed_key 17 
    then
        0006: 6@ = 4
        0006: 7@ = #SPECIAL10
        gosub @ACTOR_CREATE
        gosub @KEY_WAIT
    end
    if
    00E1:   player 0 pressed_key 14 
    then
        0006: 6@ = 2
        0006: 7@ = #SPECIAL10
        gosub @ACTOR_CREATE
        gosub @KEY_WAIT
    end
end
if
80E1:   not player 0 pressed_key 15 
jf @SKIN_BACK
jump @SKIN_ALOOP

// 
:SKIN_CLOOP
wait 0
if
00E1:   player 0 pressed_key 16
then
    gosub @KEY_WAIT
    08D8: 22@ = panel 23@ selected_row 
    08DA: remove_panel 23@ 
    03E6: remove_text_box 
    if
    001B:   6 > 22@ 
    then
        0512: show_permanent_text_box 'WARDH2'  // Use ~k~~GO_FORWARD~ and ~k~~GO_BACK~ to select an area.~N~~k~~PED_SPRINT~ Select~N~~k~~VEHICLE_ENTER_EXIT~ Back
        08D4: 23@ = create_panel_with_title 'CLOTCHO' position 29.0 145.0 width 186.0 columns 1 interactive 1 background 1 alignment 1  // Apparel
        if
        0039:   22@ == 0
        then
            05AA: 24@s = 'CSCHP' 
        end
        if
        0039:   22@ == 1
        then
            05AA: 24@s = 'CSSPRT' 
        end
        if
        0039:   22@ == 2
        then
            05AA: 24@s = 'LACS1' 
        end
        if
        0039:   22@ == 3
        then
            05AA: 24@s = 'CLOTHGP' 
        end
        if
        0039:   22@ == 4
        then
            05AA: 24@s = 'CSDESGN' 
        end
        if
        0039:   22@ == 5
        then
            05AA: 24@s = 'CSEXL' 
        end
        08DB: set_panel 23@ column 0 header 'DUMMY' data 'TORSO' 'LEGS' 'FEET' 'CHAINS' 'WATCHES' 'SHADES' 'HATS' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 
        jump @SKIN_CLOOP2
    end
    if
    0039:   22@ == 6
    then
        0006: 18@ = 17
        05AA: 24@s = 'UNIFORM' 
        0512: show_permanent_text_box 'WARDH3'  // Use ~k~~GO_FORWARD~ and ~k~~GO_BACK~ to select an item.~N~~k~~PED_SPRINT~ View~N~~k~~VEHICLE_ENTER_EXIT~ Back
        08D4: 23@ = create_panel_with_title 'CLOTCHO' position 29.0 145.0 width 186.0 columns 1 interactive 1 background 1 alignment 1  // Apparel
        for 16@ = 0 to 11
            05A9: $9897(16@,12s) = 'DUMMY'
        end
        075E: load_shopping_data_PRICES_subsection 24@s // v$ 
        075D: load_shopping_data_SHOPS_subsection "CLOTHES" // v$ 
        075F: store_shopping_data_entries_number_to 17@ 
        0006: 16@ = 0
        0006: 20@ = 0
        while 001D:   17@ > 16@ // (int) 
            0760: store_shopping_data_index 16@ textureCRC_to 19@ 
            000A: 16@ += 1 
            0783: get_shopping_item_with_textureCRC 19@ flag 1 store_to 21@ 
            if
            803B:   not  21@ == 18@ // (int) 
            then
                continue
            end
            0783: get_shopping_item_with_textureCRC 19@ flag 0 store_to 21@ 
            078C: get_shopping_item_with_textureCRC 19@ nametag_to 26@s // 8-byte string 
            008A: $2438(20@,12i) = 19@ // (int) 
            008A: $2474(20@,12i) = 21@ // (int) 
            05A9: $9897(20@,12s) = 26@s
            000A: 20@ += 1
            if
            0039:   20@ == 12
            then
                break
            end 
        end
        087C: release_shopping_data 
        08DB: set_panel 23@ column 0 header 'DUMMY' data s$9897[0] s$9897[1] s$9897[2] s$9897[3] s$9897[4] s$9897[5] s$9897[6] s$9897[7] s$9897[8] s$9897[9] s$9897[10] s$9897[11] 
        jump @SKIN_CLOOP3
    end
    if
    0039:   22@ == 7
    then
        0512: show_permanent_text_box 'WARDH2'  // Use ~k~~GO_FORWARD~ and ~k~~GO_BACK~ to select an area.~N~~k~~PED_SPRINT~ Select~N~~k~~VEHICLE_ENTER_EXIT~ Back
        08D4: 23@ = create_panel_with_title 'CLOTCHO' position 29.0 145.0 width 186.0 columns 1 interactive 1 background 1 alignment 1  // Apparel
        08DB: set_panel 23@ column 0 header 'DUMMY' data 'TORSO' 'LEGS' 'FEET' 'CHAINS' 'WATCHES' 'SHADES' 'HATS' 'SHOP7' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 
        jump @SKIN_CLOOP4
    end
    if
    0019:   22@ > 7 
    then
        0006: 18@ = 1
        if
        0039:   22@ == 8
        then
            05AA: 24@s = 'BARBERS' 
        end
        if
        0039:   22@ == 9
        then
            05AA: 24@s = 'BARBER2' 
        end
        if
        0039:   22@ == 10
        then
            05AA: 24@s = 'BARBER3' 
        end
        0512: show_permanent_text_box 'WARDH3'  // Use ~k~~GO_FORWARD~ and ~k~~GO_BACK~ to select an item.~N~~k~~PED_SPRINT~ View~N~~k~~VEHICLE_ENTER_EXIT~ Back
        08D4: 23@ = create_panel_with_title 'HAIRSTY' position 29.0 145.0 width 186.0 columns 1 interactive 1 background 1 alignment 1  // Hairstyle
        for 16@ = 0 to 11
            05A9: $9897(16@,12s) = 'DUMMY'
        end
        075E: load_shopping_data_PRICES_subsection 24@s // v$ 
        075D: load_shopping_data_SHOPS_subsection "HAIRCUTS" // v$ 
        075F: store_shopping_data_entries_number_to 17@ 
        0006: 16@ = 0
        0006: 20@ = 0
        while 001D:   17@ > 16@ // (int) 
            0760: store_shopping_data_index 16@ textureCRC_to 19@ 
            000A: 16@ += 1 
            0783: get_shopping_item_with_textureCRC 19@ flag 1 store_to 21@ 
            if
            803B:   not  21@ == 18@ // (int) 
            then
                continue
            end
            0783: get_shopping_item_with_textureCRC 19@ flag 0 store_to 21@ 
            078C: get_shopping_item_with_textureCRC 19@ nametag_to 26@s // 8-byte string 
            008A: $2438(20@,12i) = 19@ // (int) 
            008A: $2474(20@,12i) = 21@ // (int) 
            05A9: $9897(20@,12s) = 26@s
            000A: 20@ += 1
            if
            0039:   20@ == 12
            then
                break
            end 
        end
        087C: release_shopping_data 
        08DB: set_panel 23@ column 0 header 'DUMMY' data s$9897[0] s$9897[1] s$9897[2] s$9897[3] s$9897[4] s$9897[5] s$9897[6] s$9897[7] s$9897[8] s$9897[9] s$9897[10] s$9897[11] 
        jump @SKIN_CLOOP3
    end
end
if
00E1:   player 0 pressed_key 15 
then
    gosub @KEY_WAIT
    08DA: remove_panel 23@ 
    03E6: remove_text_box
    gosub @SKIN_REST 
    jump @SKIN_MENU
end
jump @SKIN_CLOOP

:SKIN_CLOOP2
wait 0
if
00E1:   player 0 pressed_key 16
then
    gosub @KEY_WAIT
    08D8: 18@ = panel 23@ selected_row 
    gosub @GET_BODYPART
    08DA: remove_panel 23@ 
    03E6: remove_text_box 
    0512: show_permanent_text_box 'WARDH3'  // Use ~k~~GO_FORWARD~ and ~k~~GO_BACK~ to select an item.~N~~k~~PED_SPRINT~ View~N~~k~~VEHICLE_ENTER_EXIT~ Back
    08D4: 23@ = create_panel_with_title 'CLOTCHO' position 29.0 145.0 width 186.0 columns 1 interactive 1 background 1 alignment 1  // Apparel
    for 16@ = 0 to 11
        05A9: $9897(16@,12s) = 'DUMMY'
    end
    075E: load_shopping_data_PRICES_subsection 24@s // v$ 
    075D: load_shopping_data_SHOPS_subsection "CLOTHES" // v$ 
    075F: store_shopping_data_entries_number_to 17@ 
    0006: 16@ = 0
    0006: 20@ = 0
    while 001D:   17@ > 16@ // (int) 
        0760: store_shopping_data_index 16@ textureCRC_to 19@ 
        000A: 16@ += 1 
        0783: get_shopping_item_with_textureCRC 19@ flag 1 store_to 21@ 
        if
        803B:   not  21@ == 18@ // (int) 
        then
            continue
        end
        0783: get_shopping_item_with_textureCRC 19@ flag 0 store_to 21@ 
        078C: get_shopping_item_with_textureCRC 19@ nametag_to 26@s // 8-byte string 
        008A: $2438(20@,12i) = 19@ // (int) 
        008A: $2474(20@,12i) = 21@ // (int) 
        05A9: $9897(20@,12s) = 26@s
        000A: 20@ += 1
        if
        0039:   20@ == 12
        then
            break
        end 
    end
    087C: release_shopping_data 
    08DB: set_panel 23@ column 0 header 'DUMMY' data s$9897[0] s$9897[1] s$9897[2] s$9897[3] s$9897[4] s$9897[5] s$9897[6] s$9897[7] s$9897[8] s$9897[9] s$9897[10] s$9897[11] 
    jump @SKIN_CLOOP3
end
if
00E1:   player 0 pressed_key 15 
then
    gosub @KEY_WAIT
    08DA: remove_panel 23@ 
    03E6: remove_text_box 
    0512: show_permanent_text_box 'WARDH1'  // Use ~k~~GO_FORWARD~ and ~k~~GO_BACK~ to select a shop.~N~~k~~PED_SPRINT~ Select~N~~k~~VEHICLE_ENTER_EXIT~ Quit
    08D4: 23@ = create_panel_with_title 'CLOTCHO' position 29.0 145.0 width 186.0 columns 1 interactive 1 background 1 alignment 1  // Apparel
    08DB: set_panel 23@ column 0 header 'DUMMY' data 'SHOP1' 'SHOP2' 'SHOP3' 'SHOP4' 'SHOP5' 'SHOP6' 'SHOP7' 'REMCLT' 'BARBERS' 'BARBER2' 'BARBER3' 'DUMMY' 
    jump @SKIN_CLOOP
end
jump @SKIN_CLOOP2

:SKIN_CLOOP3
wait 0
if
00E1:   player 0 pressed_key 16
then
    gosub @KEY_WAIT
    08D8: 21@ = panel 23@ selected_row 
    if or
    0039:   18@ == 0
    0039:   18@ == 2
    0039:   18@ == 3
    then
        0784: set_player $PLAYER_CHAR textureCRC 0 modelCRC 0 bodypart 17 
    end
    0784: set_player $PLAYER_CHAR textureCRC $2438(21@,12i) modelCRC $2474(21@,12i) bodypart 18@ 
    070D: rebuild_player $PLAYER_CHAR 
end
if
00E1:   player 0 pressed_key 15 
then
    gosub @KEY_WAIT
    08DA: remove_panel 23@ 
    03E6: remove_text_box
    if or
    0039:   18@ == 17
    0039:   18@ == 1
    then
        0512: show_permanent_text_box 'WARDH1'  // Use ~k~~GO_FORWARD~ and ~k~~GO_BACK~ to select a shop.~N~~k~~PED_SPRINT~ Select~N~~k~~VEHICLE_ENTER_EXIT~ Quit
        08D4: 23@ = create_panel_with_title 'CLOTCHO' position 29.0 145.0 width 186.0 columns 1 interactive 1 background 1 alignment 1  // Apparel
        08DB: set_panel 23@ column 0 header 'DUMMY' data 'SHOP1' 'SHOP2' 'SHOP3' 'SHOP4' 'SHOP5' 'SHOP6' 'SHOP7' 'REMCLT' 'BARBERS' 'BARBER2' 'BARBER3' 'DUMMY' 
        jump @SKIN_CLOOP
    else
        0512: show_permanent_text_box 'WARDH2'  // Use ~k~~GO_FORWARD~ and ~k~~GO_BACK~ to select an area.~N~~k~~PED_SPRINT~ Select~N~~k~~VEHICLE_ENTER_EXIT~ Back
        08D4: 23@ = create_panel_with_title 'CLOTCHO' position 29.0 145.0 width 186.0 columns 1 interactive 1 background 1 alignment 1  // Apparel
        08DB: set_panel 23@ column 0 header 'DUMMY' data 'TORSO' 'LEGS' 'FEET' 'CHAINS' 'WATCHES' 'SHADES' 'HATS' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 
        jump @SKIN_CLOOP2
    end 
end
jump @SKIN_CLOOP3

:SKIN_CLOOP4
wait 0
if
00E1:   player 0 pressed_key 16
then
    gosub @KEY_WAIT
    08D8: 18@ = panel 23@ selected_row 
    gosub @GET_BODYPART
    0784: set_player $PLAYER_CHAR textureCRC 0 modelCRC 0 bodypart 18@ 
    070D: rebuild_player $PLAYER_CHAR 
end
if
00E1:   player 0 pressed_key 15 
then
    gosub @KEY_WAIT
    08DA: remove_panel 23@ 
    03E6: remove_text_box 
    0512: show_permanent_text_box 'WARDH1'  // Use ~k~~GO_FORWARD~ and ~k~~GO_BACK~ to select a shop.~N~~k~~PED_SPRINT~ Select~N~~k~~VEHICLE_ENTER_EXIT~ Quit
    08D4: 23@ = create_panel_with_title 'CLOTCHO' position 29.0 145.0 width 186.0 columns 1 interactive 1 background 1 alignment 1  // Apparel
    08DB: set_panel 23@ column 0 header 'DUMMY' data 'SHOP1' 'SHOP2' 'SHOP3' 'SHOP4' 'SHOP5' 'SHOP6' 'SHOP7' 'REMCLT' 'BARBERS' 'BARBER2' 'BARBER3' 'DUMMY' 
    jump @SKIN_CLOOP
end
jump @SKIN_CLOOP4

// ̌^ 
:SKIN_FLOOP
0006: 33@ = 0
wait 0
0494: get_joystick 0 data_to 21@ 22@ 22@ 22@ 
if or
0019:   21@ > 64 
001B:   -64 > 21@ 
then
    006A: 21@ *= 33@ // (int) 
    0093: 21@ = integer 21@ to_float 
    0017: 21@ /= 640.0 
    08D7: 20@ = panel 23@ active_row 
    0012: 20@ *= 2
    000A: 20@ += 21 
    0653: 22@ = float_stat 20@ 
    005B: 22@ += 21@ // (float) 
    if
    0023:   0.0 > 22@ 
    then
        0007: 22@ = 0.0 
    end
    if
    0021:   22@ > 1000.0 
    then
        0007: 22@ = 1000.0 
    end
    062A: change_float_stat 20@ to 22@
    0653: 20@ = float_stat 21 
    0653: 21@ = float_stat 23
    0092: 20@ = float 20@ to_integer 
    0092: 21@ = float 21@ to_integer 
    08EE: set_panel 23@ column 1 row 0 text_1number GXT 'NUMBER' number 20@  // ~1~
    08EE: set_panel 23@ column 1 row 1 text_1number GXT 'NUMBER' number 21@  // ~1~
end
if
00E1:   player 0 pressed_key 16 
then
    070D: rebuild_player $PLAYER_CHAR 
end
if
00E1:   player 0 pressed_key 15 
then
    gosub @KEY_WAIT
    08DA: remove_panel 23@ 
    03E6: remove_text_box
    gosub @SKIN_REST 
    jump @SKIN_MENU
end
jump @SKIN_FLOOP

:SKIN_BACK
wait 0
if
80E1:   not player 0 pressed_key 15 
jf @SKIN_BACK
jump @SKIN_MENU


//=========
// ٰ 
//=========

// ĺނ̱ڽ擾 
:GET_ADDRESS 
0A9F: 0@ = current_thread_pointer
000A: 0@ += 0x10
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
return

// ÷ޯ\ 
:SHOW_TEXT_BOX
if
0AA9:   is_game_version_original
then
    0AA5: call 0x588BE0 num_params 4 pop 4 0 0 0 0@   
else
    0AA5: call 0x5893B0 num_params 4 pop 4 0 0 0 0@   
end
return

// /è̏Ԃ擾 
:GET_KEY
0494: get_joystick 0 data_to 23@ 21@ 23@ 23@ 
if and
0019:   21@ > -64 
001B:   64 > 21@ 
then
    0006: 32@ = 950
    0006: 33@ = 0
end
if
0019:   33@ > 950 
then
    0006: 33@ = 950
end
0085: 22@ = 33@ // (int) 
0012: 22@ *= -1
000A: 22@ += 1000 
return

// ܂ő҂ 
:KEY_WAIT
wait 0
if and
80E1:   not player 0 pressed_key 15 
80E1:   not player 0 pressed_key 16 
80E1:   not player 0 pressed_key 17 
80E1:   not player 0 pressed_key 14 
80E1:   not player 0 pressed_key 18 
80E1:   not player 0 pressed_key 19 
jf @KEY_WAIT
return

// ߼ٱ۰ 
:SKIN_LOAD
023C: load_special_actor "____________________" as 10 // models 290-299 
038B: load_requested_models 
while 823D:   not special_actor 10 loaded
    wait 0
end 
return

// ؽĂ̏ 
:WRITE_TEXT_CLEAR
gosub @GET_ADDRESS
000E: 0@ -= @TEXT_SKIN_LIST
000A: 0@ += 115
for 16@ = 0 to 10
    0A8C: write_memory 0@ size 4 value 0x5F5F5F5F virtual_protect 0
    000A: 0@ += 4
    0A8C: write_memory 0@ size 4 value 0x5F5F5F5F virtual_protect 0
    000A: 0@ += 4
    0A8C: write_memory 0@ size 4 value 0x5F5F5F5F virtual_protect 0
    000A: 0@ += 4
    000A: 0@ += 6
end
return

// ʏؽĂ̐ 
:WRITE_TEXT_NORMAL
for 16@ = 0 to 10
    0085: 17@ = 3@ // (int) 
    000A: 17@ += -5
    005A: 17@ += 16@ // (int) 
    if and
    0029:   17@ >= 0 
    002B:   MAX_NORMAL_SKIN >= 17@ 
    then
        0085: 22@ = 3@ // (int) 
        000A: 22@ += -5
        005A: 22@ += 16@ // (int) 
        gosub @GET_ADDRESS
        000E: 0@ -= @TEXT_SKIN_LIST
        000A: 0@ += 115
        0085: 17@ = 16@ // (int) 
        0012: 17@ *= 18
        005A: 0@ += 17@ // (int) 
        0085: 17@ = 22@ // (int) 
        0085: 23@ = 22@ // (int) 
        0016: 23@ /= 1000 
        0012: 23@ *= 1000 
        0062: 17@ -= 23@ // (int) 
        0016: 17@ /= 100 
        000A: 17@ += 0x30
        0A8C: write_memory 0@ size 1 value 17@ virtual_protect 0
        000A: 0@ += 1
        0085: 17@ = 22@ // (int) 
        0085: 23@ = 22@ // (int) 
        0016: 23@ /= 100 
        0012: 23@ *= 100 
        0062: 17@ -= 23@ // (int) 
        0016: 17@ /= 10 
        000A: 17@ += 0x30
        0A8C: write_memory 0@ size 1 value 17@ virtual_protect 0
        000A: 0@ += 1
        0085: 17@ = 22@ // (int) 
        0085: 23@ = 22@ // (int) 
        0016: 23@ /= 10
        0012: 23@ *= 10
        0062: 17@ -= 23@ // (int) 
        000A: 17@ += 0x30
        0A8C: write_memory 0@ size 1 value 17@ virtual_protect 0
        gosub @GET_ADDRESS
        000E: 0@ -= @LIST_SKIN_NORMAL
        0085: 23@ = 0@ // (int) 
        0085: 17@ = 3@ // (int) 
        000A: 17@ += -5
        005A: 17@ += 16@ // (int) 
        0012: 17@ *= 8
        005A: 23@ += 17@ // (int) 
        gosub @GET_ADDRESS
        000E: 0@ -= @TEXT_SKIN_LIST
        000A: 0@ += 119
        0085: 17@ = 16@ // (int) 
        0012: 17@ *= 18
        005A: 0@ += 17@ // (int) 
        for 17@ = 0 to 11
            0A8D: 1@ = read_memory 23@ size 1 virtual_protect 0
            if
            0039:   1@ == 0x00
            then
                break
            end
            0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
            000A: 0@ += 1
            000A: 23@ += 1
        end
    end
end
return

// ʽؽĂ̐ 
:WRITE_TEXT_SPECIAL
for 16@ = 0 to 10
    0085: 17@ = 4@ // (int) 
    000A: 17@ += -5
    005A: 17@ += 16@ // (int) 
    if and
    0029:   17@ >= 0 
    002B:   MAX_SPECIAL_SKIN >= 17@ 
    then
        gosub @GET_ADDRESS
        000E: 0@ -= @LIST_SPECIAL
        0085: 23@ = 0@ // (int) 
        0085: 17@ = 4@ // (int) 
        000A: 17@ += -5
        005A: 17@ += 16@ // (int) 
        0012: 17@ *= 8
        005A: 23@ += 17@ // (int) 
        gosub @GET_ADDRESS
        000E: 0@ -= @TEXT_SKIN_LIST
        000A: 0@ += 115
        0085: 17@ = 16@ // (int) 
        0012: 17@ *= 18
        005A: 0@ += 17@ // (int) 
        for 17@ = 0 to 11
            0A8D: 1@ = read_memory 23@ size 1 virtual_protect 0
            if
            0039:   1@ == 0x00
            then
                break
            end
            0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
            000A: 0@ += 1
            000A: 23@ += 1
        end
    end
end
return

// ǉؽĂ̐ 
:WRITE_TEXT_ADDON
for 16@ = 0 to 10
    0085: 17@ = 5@ // (int) 
    000A: 17@ += -5
    005A: 17@ += 16@ // (int) 
    if and
    0029:   17@ >= 0 
    0019:   23@ > 17@ 
    then
        gosub @GET_ADDRESS
        000E: 0@ -= @LIST_ADDON
        0085: 23@ = 0@ // (int) 
        0085: 17@ = 5@ // (int) 
        000A: 17@ += -5
        005A: 17@ += 16@ // (int) 
        0012: 17@ *= 20
        005A: 23@ += 17@ // (int) 
        gosub @GET_ADDRESS
        000E: 0@ -= @TEXT_SKIN_LIST
        000A: 0@ += 115
        0085: 17@ = 16@ // (int) 
        0012: 17@ *= 18
        005A: 0@ += 17@ // (int) 
        for 17@ = 0 to 11
            0A8D: 1@ = read_memory 23@ size 1 virtual_protect 0
            if
            0039:   1@ == 0x00
            then
                break
            end
            0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
            000A: 0@ += 1
            000A: 23@ += 1
        end
    end
end
return

// ̂̕ʂ擾 
:GET_BODYPART
if
0029:   18@ >= 3
then
    000A: 18@ += 10
end
if and
0029:   18@ >= 1
002B:   2 >= 18@ 
then
    000A: 18@ += 1
end
return

// ƭIlɕύX 
:ACTOR_CHANGE
if
0039:   7@ == #NULL
then
    09C7: change_player $PLAYER_CHAR model_to #NULL 
end
if and
8039:   not 7@ == #NULL
8039:   not 7@ == #SPECIAL10
then
    0247: load_model 7@
    038B: load_requested_models 
    while 8248:   not model 7@ available 
        wait 0
    end 
    09C7: change_player $PLAYER_CHAR model_to 7@
    0249: release_model 7@ 
end
if
0039:   7@ == #SPECIAL10
then
    gosub @SKIN_LOAD
    09C7: change_player $PLAYER_CHAR model_to #SPECIAL10 
    0296: unload_special_actor 10 
end
return

// ƭIlo 
:ACTOR_CREATE
0208: 18@ = random_float_in_ranges -0.25 0.25
0208: 19@ = random_float_in_ranges 1.25 1.75
04C4: store_coords_to 18@ 19@ 20@ from_actor $PLAYER_ACTOR with_offset 18@ 19@ 0.5
if
0039:   7@ == #NULL
then
    009A: 16@ = create_actor_pedtype 8 model #NULL at 18@ 19@ 20@ 
end
if and
8039:   not 7@ == #NULL
8039:   not 7@ == #SPECIAL10
then
    0247: load_model 7@
    038B: load_requested_models 
    while 8248:   not model 7@ available 
        wait 0
    end 
    009A: 16@ = create_actor_pedtype 8 model 7@ at 18@ 19@ 20@ 
    0249: release_model 7@ 
end
if
0039:   7@ == #SPECIAL10
then
    gosub @SKIN_LOAD
    009A: 16@ = create_actor_pedtype 8 model #SPECIAL10 at 18@ 19@ 20@ 
    0296: unload_special_actor 10 
end

// 낢ݒ 
02A9: toggle_actor 16@ immune_to_nonplayer 1 
02AB: set_actor 16@ immunities BP 1 FP 1 EP 1 CP 1 MP 0
0223: set_actor 16@ health_to 100 
02E2: set_actor 16@ weapon_accuracy_to 95
03FE: set_actor 16@ money 0 
04D8: set_actor 16@ drowns_in_water 0 
060F: set_actor 16@ melee_accuracy_to 100.0 
077A: set_actor 16@ default_action 6@ to_actors_pedtype 6
077A: set_actor 16@ default_action 6@ to_actors_pedtype 7
077A: set_actor 16@ default_action 6@ to_actors_pedtype 9
077A: set_actor 16@ default_action 6@ to_actors_pedtype 10
077A: set_actor 16@ default_action 6@ to_actors_pedtype 11
077A: set_actor 16@ default_action 6@ to_actors_pedtype 12
077A: set_actor 16@ default_action 6@ to_actors_pedtype 13
077A: set_actor 16@ default_action 6@ to_actors_pedtype 14
077A: set_actor 16@ default_action 6@ to_actors_pedtype 17
077A: set_actor 16@ default_action 6@ to_actors_pedtype 20
if
0039:   6@ == 4
then
    07CB: set_actor 16@ supporting_fire 1
    07DD: set_actor 16@ temper_to 75 // see pedstats.dat 
else
    07CB: set_actor 16@ supporting_fire 0
    07DD: set_actor 16@ temper_to 25 // see pedstats.dat 
end
081A: set_actor 16@ weapon_skill_to 2 
if
0039:   6@ == 4
then
    // MP5 
    0247: load_model #KNIFECUR
    0247: load_model #DESERT_EAGLE
    0247: load_model #MP5LNG
    038B: load_requested_models 
    while 8248:   not model #MP5LNG available 
        wait 0
    end 
    01B2: give_actor 16@ weapon 29 ammo 3000 // Load the weapon model before using this 
    0249: release_model #MP5LNG
    //A[}[ 
    035F: actor 16@ armour += 100 
end

// ̕ӂ܂ŕ 
0208: 18@ = random_float_in_ranges -2.5 2.5
0208: 19@ = random_float_in_ranges 5.0 10.0
0208: 20@ = random_float_in_ranges -2.5 2.5
04C4: store_coords_to 18@ 19@ 20@ from_actor $PLAYER_ACTOR with_offset 18@ 19@ 20@ 
05D3: AS_actor 16@ goto_point 18@ 19@ 20@ mode 4 999999 ms // versionA 
0007: 18@ = 0.0 
0006: 19@ = 0

// lؽĂɓo^ 
gosub @GET_ADDRESS
000E: 0@ -= @LIST_SPAWNED
for 17@ = 0 to MAX_SPAWN_ACTORS
    0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
    if
    856D:   not actor 1@ defined 
    then
        0A8C: write_memory 0@ size 4 value 16@ virtual_protect 0
        0006: 16@ = ACTOR_EMPTY 
        break
    else
        00A0: store_actor $PLAYER_ACTOR position_to 24@ 25@ 26@
        00A0: store_actor 1@ position_to 27@ 28@ 29@
        0509: 20@ = distance_between_XY 24@ 25@ and_XY 27@ 28@
        if
        0025:   20@ > 18@ // (float) 
        then
            0085: 19@ = 17@ // (int) 
            0087: 18@ = 20@ // (float) 
        end
    end
    000A: 0@ += 4
end
// 󂫂ꍇ 
if
8039:   not 16@ == ACTOR_EMPTY 
then
    gosub @GET_ADDRESS
    000E: 0@ -= @LIST_SPAWNED
    0012: 19@ *= 4
    005A: 0@ += 19@ // (int) 
    0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
    01C2: remove_references_to_actor 1@ // Like turning an actor into a random pedestrian 
    0A8C: write_memory 0@ size 4 value 16@ virtual_protect 0
    0006: 16@ = ACTOR_EMPTY 
end
return


//==========================
// s齸Ă܂ 
//==========================


//==============
// \p 
//==============

// ƭp 
:TEXT_SKIN_MENU
hex
"~y~SkinSelector_v2.1_C~w~~n~~n~~k~~PED_FIREWEAPON~_Normal_Peds~n~~k~~PED_JUMPING~_Special_Actors~n~~k~~PED_SPRINT~_Add-on_Actors~n~~n~~k~~PED_DUCK~_Player_Cloth~n~~k~~PED_LOOKBEHIND~_Player_Shape~n~~n~~k~~VEHICLE_ENTER_EXIT~_Quit" 00
end

// ؽėp 
:TEXT_SKIN_LIST
hex
"~k~~PED_SPRINT~_Change_Skin~n~~k~~PED_FIREWEAPON~_Spawn_~r~Extreme~n~~w~~k~~PED_JUMPING~_Spawn_~g~Moderate~n~"
"~n~~w~____________" "~n~~w~____________" "~n~~w~____________" "~n~~w~____________"
"~n~~w~____________" "~n~~y~____________" "~n~~w~____________" "~n~~w~____________"
"~n~~w~____________" "~n~~w~____________" "~n~~w~____________" 00
end

:TEXT_SKIN_SHAPE
hex
"Use_~k~~GO_FORWARD~_and_~k~~GO_BACK~_to_select~n~an_item.~n~Use_~k~~GO_LEFT~_and_~k~~GO_RIGHT~_to_change~n~a_value.~n~~k~~PED_SPRINT~_Preview~n~~k~~VEHICLE_ENTER_EXIT~_Quit" 00
end

// װ\ 
:TEXT_FILE_NOT_FOUND
hex
"~y~SkinSlector_v2.0~n~~r~Error:_File_'CLEO\\SKIN.IMG'_not_found." 00
end

// װ\ 
:TEXT_FILE_CANT_READ
hex
"~y~SkinSlector_v2.0~n~~r~Error:_File_'CLEO\\SKIN.IMG'_can't_read." 00
end


//==========
// ݖؽ 
//==========

// ʏؽ 
// {IɕύXȂ 
:LIST_SKIN_NORMAL
hex
"null____" "________" "________" "________" "________" "________" "________" "male01__"
"________" "BFORI___" "BFOST___" "VBFYCRP_" "BFYRI___" "BFYST___" "BMORI___" "BMOST___"
"BMYAP___" "BMYBU___" "BMYBE___" "BMYDJ___" "BMYRI___" "BMYCR___" "BMYST___" "WMYBMX__"
"WBDYG1__" "WBDYG2__" "WMYBP___" "WMYCON__" "BMYDRUG_" "WMYDRUG_" "HMYDRUG_" "DWFOLC__"
"DWMOLC1_" "DWMOLC2_" "DWMYLC1_" "HMOGAR__" "WMYGOL1_" "WMYGOL2_" "HFORI___" "HFOST___"
"HFYRI___" "HFYST___" "________" "HMORI___" "HMOST___" "HMYBE___" "HMYRI___" "HMYCR___"
"HMYST___" "OMOKUNG_" "WMYMECH_" "BMYMOUN_" "WMYMOUN_" "OFORI___" "OFOST___" "OFYRI___"
"OFYST___" "OMORI___" "OMOST___" "OMYRI___" "OMYST___" "WMYPLT__" "WMOPJ___" "BFYPRO__"
"HFYPRO__" "________" "BMYPOL1_" "BMYPOL2_" "WMOPREA_" "SBFYST__" "WMOSCI__" "WMYSGRD_"
"SWMYHP1_" "SWMYHP2_" "________" "SWFOPRO_" "WFYSTEW_" "SWMOTR1_" "WMOTR1__" "BMOTR1__"
"VBMYBOX_" "VWMYBOX_" "VHMYELV_" "VBMYELV_" "VIMYELV_" "VWFYPRO_" "________" "VWFYST1_"
"WFORI___" "WFOST___" "WFYJG___" "WFYRI___" "WFYRO___" "WFYST___" "WMORI___" "WMOST___"
"WMYJG___" "WMYLG___" "WMYRI___" "WMYRO___" "WMYCR___" "WMYST___" "BALLAS1_" "BALLAS2_"
"BALLAS3_" "FAM1____" "FAM2____" "FAM3____" "LSV1____" "LSV2____" "LSV3____" "MAFFA___"
"MAFFB___" "MAFBOSS_" "VLA1____" "VLA2____" "VLA3____" "TRIADA__" "TRIADB__" "________"
"TRIBOSS_" "DNB1____" "DNB2____" "DNB3____" "VMAFF1__" "VMAFF2__" "VMAFF3__" "VMAFF4__"
"DNMYLC__" "DNFOLC1_" "DNFOLC2_" "DNFYLC__" "DNMOLC1_" "DNMOLC2_" "SBMOTR2_" "SWMOTR2_"
"SBMYTR3_" "SWMOTR3_" "WFYBE___" "BFYBE___" "HFYBE___" "SOFYBU__" "SBMYST__" "SBMYCR__"
"BMYCG___" "WFYCRK__" "HMYCM___" "WMYBU___" "BFYBU___" "________" "WFYBU___" "DWFYLC1_"
"WFYPRO__" "WMYCONB_" "WMYBE___" "WMYPIZZ_" "BMOBAR__" "CWFYHB__" "CWMOFR__" "CWMOHB1_"
"CWMOHB2_" "CWMYFR__" "CWMYHB1_" "BMYBOUN_" "WMYBOUN_" "WMOMIB__" "BMYMIB__" "WMYBELL_"
"BMOCHIL_" "SOFYRI__" "SOMYST__" "VWMYBJD_" "VWFYCRP_" "SFR1____" "SFR2____" "SFR3____"
"BMYBAR__" "WMYBAR__" "WFYSEX__" "WMYAMMO_" "BMYTATT_" "VWMYCR__" "VBMOCD__" "VBMYCR__"
"VHMYCR__" "SBMYRI__" "SOMYRI__" "SOMYBU__" "SWMYST__" "WMYVA___" "COPGRL3_" "GUNGRL3_"
"MECGRL3_" "NURGRL3_" "CROGRL3_" "GANGRL3_" "CWFOFR__" "CWFOHB__" "CWFYFR1_" "CWFYFR2_"
"CWMYHB2_" "DWFYLC2_" "DWMYLC2_" "OMYKARA_" "WMYKARA_" "WFYBURG_" "VWMYCD__" "VHFYPRO_"
"________" "OMONOOD_" "OMOBOAT_" "WFYCLOT_" "VWMOTR1_" "VWMOTR2_" "VWFYWAI_" "SBFORI__"
"SWFYRI__" "WMYCLOT_" "SBFOST__" "SBFYRI__" "SBMOCD__" "SBMORI__" "SBMOST__" "SHMYCR__"
"SOFORI__" "SOFOST__" "SOFYST__" "SOMOBU__" "SOMORI__" "SOMOST__" "SWMOTR5_" "SWFORI__"
"SWFOST__" "SWFYST__" "SWMOCD__" "SWMORI__" "SWMOST__" "SHFYPRO_" "SBFYPRO_" "SWMOTR4_"
"SWMYRI__" "SMYST___" "SMYST2__" "SFYPRO__" "VBFYST2_" "VBFYPRO_" "VHFYST3_" "BIKERA__"
"BIKERB__" "BMYPIMP_" "SWMYCR__" "WFYLG___" "WMYVA2__" "BMOSEC__" "BIKDRUG_" "WMYCH___"
"SBFYSTR_" "SWFYSTR_" "HECK1___" "HECK2___" "BMYCON__" "WMYCD1__" "BMOCD___" "VWFYWA2_"
"WMOICE__" "________" "________" "________" "________" "________" "________" "________"
"________" "________" "laemt1__" "lvemt1__" "sfemt1__" "lafd1___" "lvfd1___" "sffd1___"
"lapd1___" "sfpd1___" "lvpd1___" "csher___" "lapdm1__" "swat____" "fbi_____" "army____"
"dsher___" 00
end

// ʽؽ 
// gta3.imgŎĝΒǉ
// ǉ̍ۂِ̧擪̒萔ύX邱 
:LIST_SPECIAL
hex
"TENPEN__" "PULASKI_" "HERN____" "SMOKE___" "SWEET___" "RYDER___" "RYDER2__" "RYDER3__"
"EMMET___" "ANDRE___" "OGLOC___" "CESAR___" "KENDL___" "WUZIMU__" "CAT_____" "TRUTH___"
"CLAUDE__" "JETHRO__" "DWAYNE__" "ZERO____" "TBONE___" "JIZZY___" "TORINO__" "SINDACO_"
"MACCER__" "PAUL____" "ROSE____" "FORELLI_" "MADDOGG_" "JANITOR_" "BBTHIN__" "SMOKEV__" 00
end

// ǉؽ 
// skin.imgToǉݖi[
// 葽̒ǉ݂Βǉ
// ǉ̍ۂِ̧擪̒萔ύX邱 
:LIST_ADDON
hex
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
"____________________" "____________________" "____________________" "____________________"
00
end

// ol 
// 葽̐lLΒǉ 
// ǉ̍ۂِ̧擪̒萔ύX邱 
// SAŏ 
:LIST_SPAWNED
hex
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
00
end

:TEMP_MEMORY
hex
"____________________" 00
end
