Jump to content

edit file InventoryWnd


Recommended Posts

classe InventoryWnd estende UICommonAPI;

const DIALOG_USE_RECIPE = 1111; // 레시피를 사용할 것인지를 물을 때
const DIALOG_POPUP = 2222; // 아이템사용 시 지정된 팝업메시지를 띄울 때
const DIALOG_DROPITEM = 3333; // 아이템을 바닥에 버릴 때(한개)
const DIALOG_DROPITEM_ASKCOUNT = 4444; // 아이템을 바닥에 버릴 때(여러개, 개수를 물어본다)
const DIALOG_DROPITEM_ALL = 5555; // 아이템을 바닥에 버릴 때(MoveAll 상태일 때)
const DIALOG_DESTROYITEM = 6666; // 아이템을 휴지통에 버릴 때(한개)
const DIALOG_DESTROYITEM_ALL = 7777; // 아이템을 휴지통에 버릴 때(MoveAll 상태일 때)
const DIALOG_DESTROYITEM_ASKCOUNT = 8888; // 아이템을 휴지통에 버릴 때(여러개, 개수를 물어본다)
const DIALOG_CRYSTALLIZE = 9999; // 아이템을 결정화 할때
const DIALOG_NOTCRYSTALLIZE = 9998; // 결정화가 불가능하다는 경고
const DIALOG_DROPITEM_PETASKCOUNT = 10000; // 펫인벤에서 아이템이 드롭되었을 때

const EQUIPITEM_Underwear = 0;
const EQUIPITEM_Head = 1;
const EQUIPITEM_Cabelo = 2;
const EQUIPITEM_Cabelo2 = 3;
const EQUIPITEM_Pescoço = 4;
const EQUIPITEM_RHe = 5;
const EQUIPITEM_Peito = 6;
const EQUIPITEM_LHe = 7;
const EQUIPITEM_REar = 8;
const EQUIPITEM_LEar = 9;
const EQUIPITEM_Luvas = 10;
const EQUIPITEM_Legs = 11;
const EQUIPITEM_Pés = 12;
const EQUIPITEM_RFinger = 13;
const EQUIPITEM_LFinger = 14;
const EQUIPITEM_LBracelet = 15;
const EQUIPITEM_RBacelete = 16;
const EQUIPITEM_Deco1 = 17;
const EQUIPITEM_Deco2 = 18;
const EQUIPITEM_Deco3 = 19;
const EQUIPITEM_Deco4 = 20;
const EQUIPITEM_Deco5 = 21;
const EQUIPITEM_Deco6 = 22;
const EQUIPITEM_Cloak = 23;
const EQUIPITEM_Cintura = 24;
const EQUIPITEM_Max = 25;

const INVENTÁRIO_ITEM_TAB = 0;
const QUEST_ITEM_TAB = 1;

var WindowHandle m_hInventoryWnd;
var String m_WindowName;
var ItemWindowHandle m_invenItem;
var ItemWindowHandle m_questItem;
var ItemWindowHandle m_equipItem[ EQUIPITEM_Max ];
var ItemWindowHandle m_hHennaItemWindow;
var TextBoxHandle m_hAdenaTextBox;
//var TabHandle m_invenTab;
var ButtonHandle m_sortBtn;
var ButtonHandle m_BtnRotateLeft;
var ButtonHandle m_BtnRotateRight;

var TextureHandle m_CloakSlot_Disable;
var TextureHandle m_Talisman_Disable[ 6 ];


var CharacterViewportWindowHandle m_ObjectViewport;


var array<ItemID> m_itemOrder; // 인벤토리 아이템의 순서를 로컬에 저장한다.
var Vetor m_clickLocation; // 아이템 드롭할때 어디에 드롭할 지를 저장하고 있는다.

var Array<ItemInfo> m_EarItemListStart;
var Array<ItemInfo> m_EarItemList;
var Array<ItemInfo> m_FingerItemLIstStart;
var Array<ItemInfo> m_FingerItemLIst;
var Array<ItemInfo> m_DecoItemList;

var int m_invenCount;
var bool m_bCurrentState;
var int m_MaxInvenCount;
var int m_MaxQuestItemInvenCount;
var int m_MeshType;
var int m_NpcID;

var ButtonHandle m_hBtnCrystalize;

var WindowHandle ColorNickNameWnd;

//var int m_selectedItemTab;

//INVENORY EXPAND
var ButtonHandle m_BtnWindowExpand;
var ButtonHandle m_BtnAugAdd;
var ButtonHandle m_BtnAugDel;
var ButtonHandle btnInfo;
var TextureHandle m_QuestItembkgAdd2;
var TextureHandle m_QuestItembkgAdd;
//var TextureHandle m_tabbgLine;
var TextureHandle m_InventoryItembg_expand;
var int useExtendedInventory;
var int extraSlotsCount;
var int currentInvenCol;
var bool éVert;
var bool éIniciar;
var ItemInfo TaliInfo1, TaliInfo2, TaliInfo3, TaliInfo4, TaliInfo5, TaliInfo6;

var TaliWnd script_tali;
var ItemControlWnd script_item;

function OnRegisterEvent()
{
    RegisterEvent(EV_InventoryClear);
    RegisterEvent(EV_InventoryOpenWindow);
    RegisterEvent(EV_InventoryHideWindow);
    RegisterEvent(EV_InventoryAddItem);
    RegisterEvent(EV_InventoryUpdateItem);
    RegisterEvent(EV_InventoryItemListEnd);
    RegisterEvent(EV_InventoryAddHennaInfo);
    RegisterEvent(EV_InventoryToggleWindow);
    RegisterEvent(EV_UpdateHennaInfo);
    RegisterEvent(EV_UpdateUserInfo);
    RegisterEvent(EV_DialogOK);
    RegisterEvent(EV_Restart);
    RegisterEvent(EV_SetMaxCount);
    RegisterEvent(EV_ChangeCharacterPawn);
    RegisterEvent(EV_ChatMessage);
}

function OnLoad()
{
    if(CREATE_ON_DEMAND==0)
        OnRegisterEvent();
    
    m_WindowName="InventárioWnd";

    if(CREATE_ON_DEMAND==0)
        InitHandle();
    else
        InitHandleCOD();

    InitScrollBar();
    
    
    GetINIInt("Inventário", "extraSlots", extraSlotsCount, "PatchSettings");
    GetINIInt("Inventário", "useExtender", useExtendedInventory, "PatchSettings");
    currentInvenCol = extraSlotsCount + 6 + 1;
    if ( (CorInvenção atual < 6) && (ColInvenção atual > 13) )
    {
        ColInvenção atual = 6;
    }
    //m_questItem.SetCol(11);
    //m_questItem.ShowScrollBar(false);
// m_questItem.SetWindowSize(395, 34);
    //m_questItem.SetScrollBarPosition( 20, 5, -3 );
// m_questItem.SetScrollBarPosition( 21, -338, -101 );
    if ( useExtendedInventory == 1 )
    {
        resizeInventory(extraSlotsCount);
    }
    
    m_bCurrentState = false;
// m_selectedItemTab = INVENTORY_ITEM_TAB;
    
    script_tali = TaliWnd(GetScript("TaliWnd"));
    script_item = ItemControlWnd(GetScript("ItemControlWnd"));
    
    btnInfo.SetTooltipCustomType(MakeTooltipSimpleText("Excluir item - Ctrl+Alt+Click"));
    m_BtnAugAdd.SetTooltipCustomType(MakeTooltipSimpleText("Janela de Atributo"));
    m_BtnAugDel.SetTooltipCustomType(MakeTooltipSimpleText("Enchant Window"));
}

function InitHandle()
{
    m_hInventoryWnd=GetHandle(m_WindowName);
    m_invenItem = ItemWindowHandle(GetHandle(m_WindowName $ ".InventoryItem"));
    m_questItem = ItemWindowHandle(GetHandle(m_WindowName $ ".QuestItem"));
    m_hAdenaTextBox = TextBoxHandle( GetHandle(m_WindowName $ ".AdenaText") );
// m_invenTab = TabHandle(GetHandle(m_WindowName $ ".InventoryTab"));
    m_sortBtn = ButtonHandle(GetHandle(m_WindowName $ ".SortButton"));
    
    m_BtnRotateLeft= ButtonHandle(GetHandle(m_WindowName $ ".BtnRotateLeft"));
    m_BtnRotateRight= ButtonHandle(GetHandle(m_WindowName $ ".BtnRotateRight"));

    
    m_ObjectViewport = CharacterViewportWindowHandle(GetHandle("InventoryWnd.ObjectViewport"));
    
    m_equipItem[ EQUIPITEM_Underwear ] = ItemWindowHandle( GetHandle( "EquipItem_Underwear" ) );
    m_equipItem[ EQUIPITEM_Head ] = ItemWindowHandle( GetHandle( "EquipItem_Head" ) );
    m_equipItem[ EQUIPITEM_Hair ] = ItemWindowHandle( GetHandle( "EquipItem_Hair" ) );
    m_equipItem[ EQUIPITEM_Hair2 ] = ItemWindowHandle( GetHandle( "EquipItem_Hair2" ) );
    m_equipItem[ EQUIPITEM_Neck ] = ItemWindowHandle( GetHandle( "EquipItem_Neck" ) );
    m_equipItem[ EQUIPITEM_RHand ] = ItemWindowHandle( GetHandle( "EquipItem_RHand" ) );
    m_equipItem[ EQUIPITEM_Chest ] = ItemWindowHandle( GetHandle( "
    m_equipItem[ EQUIPITEM_LHand ] = ItemWindowHandle( GetHandle( "EquipItem_LHand" ) );
    m_equipItem[ EQUIPITEM_REar ] = ItemWindowHandle( GetHandle( "EquipItem_REar" ) );
    m_equipItem[ EQUIPITEM_LEar ] = ItemWindowHandle( GetHandle( "EquipItem_LEar" ) );
    m_equipItem[ EQUIPITEM_Gloves ] = ItemWindowHandle( GetHandle( "EquipItem_Gloves" ) );
    m_equipItem[ EQUIPITEM_Legs ] = ItemWindowHandle( GetHandle( "EquipItem_Legs" ) );
    m_equipItem[ EQUIPITEM_Feet ] = ItemWindowHandle( GetHandle( "EquipItem_Feet" ) );
    m_equipItem[ EQUIPITEM_RFinger ] = ItemWindowHandle( GetHandle( "EquipItem_RFinger" ) );
    m_equipItem[ EQUIPITEM_LFinger ] = ItemWindowHandle( GetHandle( "
    m_equipItem[ EQUIPITEM_LBracelet ] = ItemWindowHandle( GetHandle( "EquipItem_LBracelet" ) );
    m_equipItem[ EQUIPITEM_RBracelet ] = ItemWindowHandle( GetHandle( "EquipItem_RBracelet" ) );
    m_equipItem[ EQUIPITEM_Deco1 ] = ItemWindowHandle( GetHandle( "EquipItem_Talisman1" ) );
    m_equipItem[ EQUIPITEM_Deco2 ] = ItemWindowHandle( GetHandle( "EquipItem_Talisman2" ) );
    m_equipItem[ EQUIPITEM_Deco3 ] = ItemWindowHandle( GetHandle( "EquipItem_Talisman3" ) );
    m_equipItem[ EQUIPITEM_Deco4 ] = ItemWindowHandle( GetHandle( "EquipItem_Talisman4" ) );
    m_equipItem[ EQUIPITEM_Deco5 ] = ItemWindowHandle( GetHandle( "EquipItem_Talisman5" ) );

    m_equipItem[ EQUIPITEM_Cloak ] = ItemWindowHandle( GetHandle( "EquipItem_Cloak" ) );
    m_equipItem[ EQUIPITEM_Waist ] = ItemWindowHandle( GetHandle( "EquipItem_Waist" ) );
    
    m_equipItem[ EQUIPITEM_LHand ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Head ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Gloves ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Legs ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Feet ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Hair2 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );

    m_CloakSlot_Disable = TextureHandle(GetHandle(m_WindowName $ ".CloakSlot_Disable"));
    m_Talisman_Disable[ 0 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman1_Disable"));
    m_Talisman_Disable[ 1 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman2_Disable"));
    m_Talisman_Disable[ 2 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman3_Disable"));
    m_Talisman_Disable[ 3 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman4_Disable"));
    m_Talisman_Disable[ 4 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman5_Disable"));
    m_Talisman_Disable[ 5 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman6_Disable"));
                                                                                        
    m_hHennaItemWindow = ItemWindowHandle( GetHandle( "
    m_hBtnCrystallize = ButtonHandle(GetHandle(m_WindowName $ ".CrystallizeButton"));
    
    m_InventoryItembg_expand = TextureHandle(GetHandle("InventoryItembg_expand"));
// m_tabbg = TextureHandle(GetHandle("InventoryWnd.tabbkg"));
    m_QuestItembkgAdd2 = TextureHandle(GetHandle("InventárioWnd.QuestItembkgAdd2"));
    m_QuestItembkgAdd = TextureHandle(GetHandle("InventárioWnd.QuestItembkgAdd"));
    m_BtnWindowExpand = ButtonHandle(GetHandle(m_WindowName $ ".BtnWindowExpand"));
    m_BtnAugAdd = ButtonHandle(GetHandle(m_WindowName $ ".AddAug"));
    m_BtnAugDel = ButtonHandle(GetHandle(m_WindowName $ ".DelAug"));
    btnInfo = ButtonHandle(GetHandle(m_WindowName $ "
    
    ColorNickNameWnd = GetHandle("ColorNickNameWnd");
}

function InitHandleCOD()
{
    m_hInventoryWnd=GetWindowHandle(m_WindowName);
    m_invenItem = GetItemWindowHandle(m_WindowName $ ".InventoryItem");
    m_questItem = GetItemWindowHandle(m_WindowName $ ".QuestItem");
    m_hAdenaTextBox = GetTextBoxHandle( m_WindowName $ ".AdenaText" );
// m_invenTab = GetTabHandle(m_WindowName $ ".InventoryTab");
    m_sortBtn = GetButtonHandle(m_WindowName $ ".SortButton");
    
    m_BtnRotateLeft= GetButtonHandle(m_WindowName $ ".BtnRotateLeft");
    m_BtnRotateRight= GetButtonHandle(m_WindowName $ ".BtnRotateRight");

    
    m_ObjectViewport = GetCharacterViewportWindowHandle("InventoryWnd.ObjectViewport");
    

    m_equipItem[ EQUIPITEM_Underwear ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Underwear" );
    m_equipItem[ EQUIPITEM_Head ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Head" );
    m_equipItem[ EQUIPITEM_Hair ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Hair" );
    m_equipItem[ EQUIPITEM_Hair2 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Hair2" );
    m_equipItem[ EQUIPITEM_Neck ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Neck" );
    m_equipItem[ EQUIPITEM_RHand ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_RHand" );
    m_equipItem[ EQUIPITEM_Chest ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Chest" );

    m_equipItem[ EQUIPITEM_REar ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_REar" );
    m_equipItem[ EQUIPITEM_LEar ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_LEar" );
    m_equipItem[ EQUIPITEM_Gloves ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Gloves" );
    m_equipItem[ EQUIPITEM_Legs ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Legs" );
    m_equipItem[ EQUIPITEM_Feet ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Feet" );
    m_equipItem[ EQUIPITEM_RFinger ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_RFinger" );
    m_equipItem[ EQUIPITEM_LFinger ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_LFinger" );
    m_equipItem[ EQUIPITEM_LBracelet ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_LBracelet" );
    m_equipItem[ EQUIPITEM_RBracelet ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_RBracelet" );
    m_equipItem[ EQUIPITEM_Deco1 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman1" );
    m_equipItem[ EQUIPITEM_Deco2 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman2" );
    m_equipItem[ EQUIPITEM_Deco3 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman3" );
    m_equipItem[ EQUIPITEM_Deco4 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman4" );
    m_equipItem[ EQUIPITEM_Deco5 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman5" );
    m_equipItem[ EQUIPITEM_Deco6 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman6" );
    m_equipItem[ EQUIPITEM_Cloak ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Cloak" ); 
    m_equipItem[ EQUIPITEM_Waist ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Waist" );
    
    m_equipItem[ EQUIPITEM_LHand ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Head ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Gloves ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Legs ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Feet ].SetDisableTex( "L2UI.InventoryWnd.
    m_equipItem[ EQUIPITEM_Hair2 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_LBracelet ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_RBracelet ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_Deco1 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_Deco2 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_Deco3 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_Deco4 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_Deco5 ].SetDisableTex( "L2UI.InventoryWnd.
    //~ m_equipItem[ EQUIPITEM_Deco6 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_CloakSlot_Disable = GetTextureHandle(m_WindowName $ ".CloakSlot_Disable");
    m_Talisman_Disable[ 0 ] = GetTextureHandle(m_WindowName $ ".Talisman1_Disable");
    m_Talisman_Disable[ 1 ] = GetTextureHandle(m_WindowName $ ".Talisman2_Disable");
    m_Talisman_Disable[ 2 ] = GetTextureHandle(m_WindowName $ ".Talisman3_Disable");
    m_Talisman_Disable[ 3 ] = GetTextureHandle(m_WindowName $ ".Talisman4_Disable");
    m_Talisman_Disable[ 4 ] = GetTextureHandle(m_WindowName $ ".Talisman5_Disable");
    m_Talisman_Disable[ 5 ] = GetTextureHandle(m_WindowName $ ".Talisman6_Disable");
                                                                                
    m_hHennaItemWindow = GetItemWindowHandle( m_WindowName$.HennaItem" );
    m_hBtnCrystallize = GetButtonHandle(m_WindowName $ ".CrystallizeButton");
    
    m_InventoryItembg_expand = GetTextureHandle("InventoryWnd.InventoryItembg_expand");
// m_tabbg = GetTextureHandle("InventoryWnd.tabbkg");
    m_QuestItembkgAdd2 = GetTextureHandle("InventárioWnd.QuestItembkgAdd2");
    m_QuestItembkgAdd = GetTextureHandle("InventárioWnd.QuestItembkgAdd");
    m_BtnWindowExpand = GetButtonHandle(m_WindowName $ ".BtnWindowExpand");
    m_BtnAugAdd = GetButtonHandle(m_WindowName $ ".AddAug");
    m_BtnAugDel = GetButtonHandle(m_WindowName $ ".DelAug");

    ColorNickNameWnd = GetWindowHandle("ColorNickNameWnd");
}

function InitScrollBar()
{
    m_invenItem.SetScrollBarPosition( 0, 17, 0 );
    m_questItem.SetScrollBarPosition( 0, 3, -3 );
}

function OnEvent(int Event_ID, string param)
{
// debug("Invent Event ID :" $string(Event_ID)$" "$param);
    switch( Event_ID )
    {
    case EV_InventoryClear:
        HandleClear();
        pausa;
    case EV_InventoryOpenWindow:
        HandleOpenWindow(param);
        pausa;
    case EV_InventoryHideWindow:
        HandleHideWindow();
        pausa;
    case EV_InventoryAddItem:
        //~ debug ("adicionar item");
        HandleAddItem(param);
        pausa;
    case EV_InventoryUpdateItem:
        //~ debug ("update item" @ param);
        HandleUpdateItem(param);
        //FingerItemUpdate();
        pausa;
    case EV_InventoryItemListEnd:
        HandleItemListEnd();
        pausa;
    case EV_InventoryAddHennaInfo:
        HandleAddHennaInfo(param);
        pausa;
    case EV_UpdateHennaInfo:
        HandleUpdateHennaInfo(param);
        pausa;
    case EV_InventoryToggleWindow:
        HandleToggleWindow();
        pausa;
    case EV_DialogOK:
        HandleDialogOK();
        pausa;
    case EV_UpdateUserInfo:
        HandleUpdateUserInfo();
        pausa;
    case EV_Restart:
        HandleRestart();
        //~ SaveInventoryOrder();
        pausa;
    case EV_SetMaxCount:
        HandleSetMaxCount(param);
        //~ debug("Obteve Evento SetMaxCount" @ param);
        pausa;
    case EV_ChangeCharacterPawn:
        HandleChangeCharacterPawn(param);
        pausa;
    case EV_ChatMessage:
        HandleChatMessage( param );
        pausa;
    padrão:
        quebrar;
    };
}

function HandleChatMessage( String param )
{
    local int SysMsgIndex;

    ParseInt(param, "SysMsgIndex", SysMsgIndex);
        
        if ( SysMsgIndex == 34 )
        {
            isStart = false;
            m_hInventoryWnd.SetTimer(1130, 2000);
            script_tali.tal[0].Clear();
            script_tali.tal[1].Clear();
            script_tali.tal[2].Clear();
            script_tali.tal[3].Clear();
            
        }
}
    


function OnShow()
{
    CheckShowCrystalizeButton();
    SetAdenaText();
    SetItemCount();

    UpdateHennaInfo();
    if ( useExtendedInventory == 1 )
    {
        resizeInventory(extraSlotsCount);
    }
}

function SwitchExtendedInventory ()
{
    GetINIInt("Inventário", "extraSlots", extraSlotsCount, "PatchSettings");
  
    if ( currentInvenCol != 6 )
    {
        resizeInventory(-1);
        useExtendedInventory = 0;
    } else 
    {
        resizeInventory(extraSlotsCount);
        useExtendedInventory = 1;
    }
    SetINIInt("Inventário", "useExtender", useExtendedInventory, "PatchSettings");
    
}

function resizeInventory (int nSlotsCount)
{
  local int Width;
  local int Altura;
  local int tmp_Width;
  local int paraExpandWidth;

  m_InventoryItembg_expand.GetWindowSize(Largura,Altura);
  nSlotsCount = nSlotsCount + 1;
  currentInvenCol = 6 + nSlotsCount;
  if (nSlotsCount > 0)
  {
    tmp_Width = (nSlotsCount + 1) * 36 + 1;
    m_BtnWindowExpand.SetTexture("L2UI_edKith.frames_df_Btn_Minimize","L2UI_edKith.frames_df_btn_Minimize_down","L2UI_edKith.frames_df_btn_Minimize_over");
  } else {
    tmp_Width = 1; //deafault 1
    m_BtnWindowExpand.SetTexture("L2UI_edKith.frames_df_btn_Expand","L2UI_edKith.frames_df_btn_Expand_down","L2UI_edKith.frames_df_btn_Expand_over");
  }
  if ( Width != tmp_Width )
  {
    if ( nSlotsCount >


      toExpandWidth = 36 * nSlotsCount;
    } else {
      currentInvenCol = 6;
      paraExpandWidth = 0;
    }
    m_hInventoryWnd.SetWindowSize(446 + toExpandWidth,433);
    m_QuestItembkgAdd2.HideWindow();
    m_QuestItembkgAdd2.SetWindowSize(0, 35);
    m_invenItem.SetWindowSize(231 + toExpandWidth,288);
    m_QuestItembkgAdd.SetWindowSize(144, 35);
    
    m_questItem.SetWindowSize(415 + toExpandWidth, 34);
    m_InventoryItembg_expand.SetWindowSize(1 + toExpandWidth,288);
  // m_tabbg.SetWindowSize(242 + toExpandWidth,321);
    if (( nSlotsCount > 0 ) && ( nSlotsCount < 4 ))
    {
        m_QuestItembkgAdd2.HideWindow();
        m_QuestItembkgAdd.SetWindowSize(144 + toExpandWidth, 35);
    }
    if ( nSlotsCount > 3 )
    {
        m_QuestItembkgAdd.SetWindowSize(252, 35);        
        m_QuestItembkgAdd2.ShowWindow();
        if (nSlotsCount == 5)
            m_QuestItembkgAdd2.SetWindowSize(72, 35);
        if (nSlotsCount == 4)
            m_QuestItembkgAdd2.SetWindowSize(36, 35);            
    }
    m_invenItem.SetCol(currentInvenCol);
    m_questItem.SetCol(currentInvenCol+5);
// AddSystemMessageString(string(currentInvenCol));
// AddSystemMessageString(string(toExpandWidth));     
// AddSystemMessageString(string(nSlotsCount));
// m_questItem.SetScrollBarPosition( 20, 5, -3 );
// m_questItem.SetScrollBarPosition( 21, -338, -101 );
// RequestItemList();
  }
}


function CheckShowCrystallizeButton()
{
    if( class'UIDATA_PLAYER'.static.HasCrystallizeAbility() )
        m_hBtnCrystallize.ShowWindow();
    else
        m_hBtnCrystallize.HideWindow();
}


function OnHide()
{
    if( m_bCurrentState )
        SaveInventoryOrder();
}

//Verifica GamingState - Iniciar
função HandleRestart()
{
    m_bCurrentState = false;
}
function OnEnterState( nome a_PrevStateName )
{
    isStart = true;
    m_bCurrentState = true;
}
function OnExitState( nome a_NextStateName )
{
    m_bCurrentState = false;
}

// Função de evento
ItemWindow OnDBClickItemWithHandle( ItemWindowHandle a_hItemWindow, int index )
{
    debug("item db_click");
    UseItem( a_hItemWindow, index );
    
}

function OnRCicItemWithHandle( ItemWindowHandle a_hItemWindow, int index )
{
    debug("OnRCClickItem");
    UseItem( a_hItemWindow, index );
}

function OnSelectItemWithHandle( ItemWindowHandle a_hItemWindow, int a_Index )
{
    local int i;
    informações locais do ItemInfo;
    seqüência local ItemName;
    
    a_hItemWindow.GetSelectedItem( info );
    //printItemInfo(info);
    //TextLink
    if( IsKeyDown( IK_Shift ) )
    {
        a_hItemWindow.GetSelectedItem( info );
        ItemName = class'UIDATA_ITEM'.static.GetRefineryItemName( info.Name, info.RefineryOp1, info.RefineryOp2 );
        if (info.ItemNum > IntToInt64(1)) ItemName = ItemName @ "[" $ MakeCostString(Int64ToString(info.ItemNum)) $ "]";
        if (info.Enchanted > 0) ItemName = "+" $ info.Enchanted @ ItemName;
        SetItemTextLink( info.
// printItemInfo(info);
        //sysDebug(string(info.ID.ServerID)$" + "$ string(info.ID.ClassID));
        //sysDebug(string(class'UIDATA_PLAYER'.static.GetPlayerID()));
    }
    
    //DeleteItem
    if( IsKeyDown( IK_Alt ) && IsKeyDown( IK_Ctrl ) )
    {
        if (a_hItemWindow.GetSelectedItem( info ))
        {
            if (a_hItemWindow.FindItem(info.id) != -1)
            {
                if( class'UIDATA_PLAYER'. static.HasCrystallizeAbility() && class'UIDATA_ITEM'.static.IsCrystalzable(info.ID) )
                {    
                    RequestCrystallizeItem(info.ID,IntToInt64(1));

                }
                else
                {                    
                    RequestDestroyItem(info.ID, info.ItemNum);
                    PlayConsoleSound(IFST_TRASH_BASKET);
                }
            }
        }
    }
    
// if( a_hItemWindow == m_invenItem )
// { a_hItemWindow.GetSelectedItem( info ); printItemInfo(info);}
    
    
    if( a_hItemWindow == m_invenItem )
        return;

    if( a_hItemWindow == m_questItem )
        return;

    for( i = 0; i < EQUIPITEM_MAX; ++i )
    {
        if( a_hItemWindow != m_equipItem[ i ] )
            m_equipItem[ i ].ClearSelect();
    }
}

function OnDropItem( String strTarget, ItemInfo info, int x, int y )
{
    local int toIndex, fromIndex;

    // 인벤토리에서 온 것이 아니면 처리하지 않는다.
    debug("Inventário OnDropItem dest " $ strTarget $ ", fonte " $ info.DragSrcName $ " x:" $ x $ ", y:" $ y);
    if( !(info.DragSrcName == "InventoryItem" || info. DragSrcName == "QuestItem" || -1 != InStr( info.DragSrcName, "EquipItem" ) || info.DragSrcName == "PetInvenWnd") )
        Retorna;

    
    if( strTarget == "InventoryItem" )
    {
        if( info.DragSrcName == "InventoryItem" ) // Muda a posição do item
        {
            toIndex = m_invenItem.GetIndexAt( x, y, 1, 1 );
            
            // Troca com outro item
            if( toIndex >= 0 )
            {
                fromIndex = m_invenItem.FindItem(info.ID);
                if( toIndex != fromIndex )
                    m_invenItem.SwapItems( fromIndex, toIndex );
            }
        }
        else if( -1 != InStr( info.DragSrcName, "EquipItem" ) ) // Desequipa o item
        {
            RequestUnequipItem(info.ID, info.SlotBitType);

        else if( info.DragSrcName == "PetInvenWnd" ) // Pet -> Inventário
        {
            if( IsStackableItem(info.ConsumeType) && info.ItemNum > IntToInt64(1) ) // Item múltiplo?
            {
                if( info.AllItemCount > IntToInt64(0) ) // 전부 옮길 것인가
                {
                    if ( CheckItemLimit( info.ID, info.AllItemCount ) )
                    {
                        class'PetAPI'.static.RequestGetItemFromPet( info.ID, info.AllItemCount, false );
                    }
                }
                else
                {
                    DialogSetID(DIALOG_DROPITEM_PETASKCOUNT);
                    DialogSetReservedItemID(info.ID); // ServerID
                    DialogSetParamInt64(info.ItemNum);
                    DialogShow(DIALOG_Modalless, DIALOG_NumberPad, MakeFullSystemMsg( GetSystemMessage(72), info.Name ) );
                }
            }
            else // Item único?
            {
                class'PetAPI'.static.RequestGetItemFromPet( info.ID, IntToInt64(1), false);
            }
        }
    }
    else if( strTarget == "QuestItem" )
    {
        if( info.DragSrcName == "QuestItem" ) // Alterar a posição do item
        {
            toIndex = m_questItem.GetIndexAt( x, y, 1, 1 );
            if( toIndex >= 0 ) // Troca com outro item
            {
                fromIndex = m_questItem.FindItem(info.ID); // ServerID
                if( toIndex != fromIndex )
                {
                    // 두개의 while 문 중에 어차피 한개에만 들어간다.
                    while( fromIndex < toIndex ) // 앞으로 땡기기
                    {
                        m_questItem.SwapItems( fromIndex, fromIndex + 1 );
                        ++ do Índice;
                    }

                    while( toIndex < fromIndex ) // 뒤로 밀어내기
                    {
                        m_questItem.SwapItems( fromIndex, fromIndex - 1 );
                        --fromIndex;
                    }
                }
            }
            else // move este item para o último
            {
                return;
                //fromIndex = m_invenItem.GetItemNum();
                //while( toIndex < fromIndex - 1 )
                //{
            // m_invenItem.SwapItems( toIndex, toIndex + 1 );
            // ++toIndex;
            // };
            }
        }
    }
    else if( -1 != InStr( strTarget, "EquipItem" ) || strTarget == "ObjectViewportDispatchMsg" ) // Equipar o item
    {
        debug("Inven EquipItem: " $info.DragSrcName $" " $string(info. Tipo de item));
        if( info.DragSrcName == "PetInvenWnd" ) // Pet -> Equip
        {
            class'PetAPI'.static.RequestGetItemFromPet( info.ID, IntToInt64(1), true );
        }
        else if( -1 != InStr( info.DragSrcName, "EquipItem" ) ) //função da função. 
        {
        }
        else if( EItemType(info.ItemType) != ITEM_ETCITEM )
        {
            debug("RequestuseItem");
            RequestUseItem(info.ID);
        }
    }
    else if( strTarget == "TrashButton" ) // Destruir item(após confirmação)
    {
        if( IsStackableItem(info.ConsumeType) && info.ItemNum > IntToInt64(1) ) // Vários itens?
        {
            if( info.AllItemCount > IntToInt64(0) ) // Cobrança de dados
            {                
                DialogSetID(DIALOG_DESTROYITEM_ALL);
                DialogSetReservedItemID(info.ID); // ServerID
                DialogSetReservedInt2(info.AllItemCount);
                DialogShow(DIALOG_Modalless,DIALOG_Warning, MakeFullSystemMsg(GetSystemMessage(74), info.Name, ""));
            }
            senão
            {
                DialogSetID(DIALOG_DESTROYITEM_ASKCOUNT);
                DialogSetReservedItemID(info.ID); // ServerID
                DialogSetParamInt64(info.ItemNum);
                DialogShow(DIALOG_Modalless, DIALOG_NumberPad, MakeFullSystemMsg( GetSystemMessage(73), info.Name ) );
            }
        }
        else // Item único?
        {
            // 파쇄하려 할때, 결정화가 가능한 상황이면 그냥 결정화
            if( class'UIDATA_PLAYER'.static.HasCrystallizeAbility() && class'UIDATA_ITEM'.static.IsCrystallizable(info.ID) )             {static.IsCrystallizable(info.ID) )
            {
                static.IsCrystallizable(info.ID);
                DialogSetReservedItemID(info.ID);
                DialogShow(DIALOG_Modalless,DIALOG_Warning, MakeFullSystemMsg(GetSystemMessage(2232), info.Name ) );
            }
            else
            {
                DialogSetID(DIALOG_DESTROYITEM);
                DialogSetReservedItemID(info.ID); // ServerID
                DialogShow(DIALOG_Modalless, DIALOG_Warning, MakeFullSystemMsg( GetSystemMessage(74), info.Name ) );
            }
        }
    }
    else if( strTarget == "CrystallizeButton" )
    {
        if( info.DragSrcName == "InventoryItem" || ( -1 != InStr( info.DragSrcName, "EquipItem" ) ) )
        {
            if( class'UIDATA_PLAYER'.static.HasCrystallizeAbility() && class'UIDATA_ITEM'.static.IsCrystalzable(info.ID) ) // Mostra a caixa de diálogo pedindo confirmação
            {
                DialogSetID(DIALOG_CRYSTALLIZE);
                DialogSetReservedItemID(info.ID);
                DialogShow(DIALOG_Modalless,DIALOG_Warning, MakeFullSystemMsg(GetSystemMessage(336), info.Name ) );
            }
            else
            {
                DialogSetID(DIALOG_NOTCRYSTALLIZE);
                DialogShow(DIALOG_Modalless,DIALOG_Notice, MakeFullSystemMsg(GetSystemMessage(2171), info.Name ) );                
            }
        }
    }    
    //~ SaveInventoryOrder();
}

// 같은 아이템 창 에서 아이템 을 옮기는 은 은 은 은 에서 하도록 하고 여기서 는 바닥 바닥 에 버리는 상황 만 한다 한다.
function OnDropItemSource( String strTarget, ItemInfo info )
{
    if( strTarget == "Console" )
    {
        if( info.DragSrcName == "InventoryItem" || info.DragSrcName == "QuestItem"
            || ( -1 != InStr( info .DragSrcName, "EquipItem" ) ) )
        {
            m_clickLocation = GetClickLocation();
            if( IsStackableItem(info.ConsumeType) && info.ItemNum > IntToInt64(1) ) // Cobrança de dados de acesso
            {
                if( info.AllItemCount > IntToInt64(0) ) // Cobrança de dados
                {
                    DialogHide();
                    DialogSetID( DIALOG_DROPITEM_ALL );
                    DialogSetReservedItemID(info.ID); // ServerID
                    DialogSetReservedInt2(info.AllItemCount);
                    DialogShow(DIALOG_Modalless,DIALOG_Warning, MakeFullSystemMsg(GetSystemMessage(1833), info.Name, ""));
                }
                else // 숫자를 물어볼 것인가
                {
                    DialogHide();
                    DialogSetID( DIALOG_DROPITEM_ASKCOUNT );
                    DialogSetReservedItemID(info.ID); // ServerID
                    DialogSetParamInt64(info.ItemNum);
                    DialogShow(DIALOG_Modalless,DIALOG_NumberPad, MakeFullSystemMsg(GetSystemMessage(71), info.Name, ""));
                }
            }
            else
            {
                DialogHide();
                DialogSetID( DIALOG_DROPITEM );
                DialogSetReservedItemID(info.ID); // ServerID
                DialogShow(DIALOG_Modalless,DIALOG_Warning, MakeFullSystemMsg(GetSystemMessage(400), info.Name, ""));
            }
        }
    }
    //~ SaveInventoryOrder();
}

function bool IsEquipItem( out ItemInfo info )
{
    return info.bEquipped;
}

function bool IsQuestItem( out ItemInfo info )
{
    return EItemtype(info.ItemType) == ITEM_QUESTITEM;
}
 
function HandleClear()
{
    InvenClear();
    EquipItemClear();
    m_questItem.Clear();
    
    m_EarItemListStart.Length = 0;
    m_EarItemList.Length = 0;
    m_FingerItemLIst.Length = 0;
    m_FingerItemLIstStart.Length = 0;
    m_DecoItemList.Length = 0;
}

function int EquipItemGetItemNum()
{
    local int i;
    local int ItemNum;

    for( i = 0; i < EQUIPITEM_Max; ++i )
    {
        if(m_equipItem[ i ].IsEnableWindow()) // 세트아이템은 하나만 센다. 
        {
            ItemNum = ItemNum + m_equipItem[ i ].GetItemNum();
        }
    }

    retornar ItemNum;
}

function EquipItemClear()
{
    local int i;

    for( i = 0; i < EQUIPITEM_Max; ++i )
        m_equipItem[ i ].Clear();
}

function bool LocalizarEquipItem(ItemID sID)
{
    local int i;
    local int Índice;

    for( i = 0; i < EQUIPITEM_Max; ++i )
    {
        Índice = m_equipItem[ i ].FindItem( sID ); // ServerID
        if( -1 != Index )
            return true;
    }

    retorna falso;
}

function EquipItemDelete( ItemID sID )
{
    local int i;
    local int Índice;
    local ItemInfo TheItemInfo;

    for( i = 0; i < EQUIPITEM_Max; ++i )
    {
        Índice = m_equipItem[ i ].FindItem( sID ); // ServerID
        if( -1 != Index )
        {
            m_equipItem[ i ].Clear();

            // 화살을 버리는 경우, 빈자리에 활 모양이 표시되어야한다.
            if( i == EQUIPITEM_LHand )
            {
                if( m_equipItem[ EQUIPITEM_RHand ].GetItem( 0, TheItemInfo ) )
                {
                    if( TheItemInfo.SlotBitType == 16384 )
                    {
                        m_equipItem[ EQUIPITEM_LHand ].Clear();
                        m_equipItem[ EQUIPITEM_LHand ].AddItem( TheItemInfo );
                        m_equipItem[ EQUIPITEM_LHand ].DisableWindow();
                    }
                    
                }
            }
            
            if ( i >= EQUIPITEM_Deco1 && i <= EQUIPITEM_Deco6) //TaliWnd
                script_tali.tal[i - 17].Clear();
            senão if (i == EQUIPITEM_REar)
                script_item.item3.Clear();
            senão if ( i == EQUIPITEM_Neck )
                script_item.item2.Clear();
            else if ( ( i == EQUIPITEM_Neck ) )
                script_item.item4.Clear();
            senão if ( i == EQUIPITEM_Neck )
                script_item.item1.Clear();
            else if ( i == EQUIPITEM_Neck )
            {
                script_item.item5.Clear();
                script_item.tex5.SetTexture("");
                isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
                if (!isVert) script_item.Me.SetWindowSize( 145 , 34 );
                else script_item.Me.SetWindowSize( 34 , 145 );
            }
        }
    }
}

function EarItemUpdate()
{
    local int i;
    local int LEarIndex, REarIndex;

    LEarIndex = -1;
    ÍndiceRear = -1;

    for( i = 0; i < m_EarItemList.Length; ++i )
    {
        switch( IsLOrREar( m_EarItemList[i].ID ) )
        {
        case -1:
            LEarIndex = i;
            pausa;
        caso 0:
            m_EarItemList.Remove( i, 1 );
            pausa;
        caso 1:
            REarIndex = i;
            pausa;
        }
    }

    if( -1 != LEarIndex )
    {
        //~ debug("왼쪽 귀걸이");
        m_equipItem[ EQUIPITEM_LEar ].Clear();
        m_equipItem[ EQUIPITEM_LEar ].AddItem( m_EarItemList[ LEarIndex ] );
    }

    if( -1 != REarIndex )
    {
        //~ debug("오른쪽 귀걸이");
        m_equipItem[ EQUIPITEM_REar ].Clear();
        m_equipItem[ EQUIPITEM_REar ].AddItem( m_EarItemList[ REarIndex ] );
        script_item.item3.Clear();
        script_item.item3.AddItem(m_EarItemList[ REarIndex ]);

    }
}

function EarItemUpdateStart()
{
    local int i;
    local int LEarIndex, REarIndex;

    LEarIndex = -1;
    ÍndiceRear = -1;

    for( i = 0; i < m_EarItemListStart.Length; ++i )
    {
        switch( IsLOrREar( m_EarItemListStart[i].ID ) )
        {
        case -1:
            
            LEarIndex = i;
            pausa;
        caso 0:
            m_EarItemList.Remove( i, 1 );
            pausa;
        caso 1:
            REarIndex = i;
            pausa;
        }
    }

    if( -1 != LEarIndex )
    {
        m_equipItem[ EQUIPITEM_LEar ].Clear();
        m_equipItem[ EQUIPITEM_LEar ].AddItem( m_EarItemListStart[ LEarIndex ] );
    }

    if( -1 != REarIndex )
    {
        m_equipItem[ EQUIPITEM_REar ].Clear();
        m_equipItem[ EQUIPITEM_REar ].AddItem( m_EarItemListStart[ REarIndex ] );
        
        script_item.item3.Clear();
        script_item.item3.AddItem(m_EarItemListStart[ REarIndex ]);
    }
}

//~ Função RBraceletItemUpdate()
//~ {
    //~ local int i;
    //~ if (g_RBraceTurnOn)
    //~ {
        //~ m_equipItem[ EQUIPITEM_Deco1 ].EnableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco2 ].EnableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco3 ].EnableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco4 ].EnableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco5 ].EnableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco6 ].EnableWindow();
    //~ }
    //~ else
    //~ {
        //~ m_equipItem[ EQUIPITEM_Deco1 ].DisableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco2 ].DisableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco3 ].DisableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco4 ].DisableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco5 ].DisableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco6 ].DisableWindow();
    //~ }
//~ }

function FingerItemUpdate()
{
    local int i;
    local int LFingerIndex, RFingerIndex;

    LFingerIndex = -1;
    RFingerIndex = -1;
// AddSystemMessageString(string(m_FingerItemList.Length) $ " FingerItemUpdate ");
// AddSystemMessageString(string(m_FingerItemListStart.Length) $ " FingerItemUpdate Start");
    for( i = 0; i < m_FingerItemList.Length; ++i )
    {
        switch( IsLOrRFinger( m_FingerItemList[i].ID ) )
        {
        case -1:
            
            LFingerIndex = i;
// AddSystemMessageString((m_FingerItemList[i].Name) $ " case -1 " $ string(LFingerIndex));
            pausa;
        case 0:
// AddSystemMessageString((m_FingerItemList[i].Name) $" case 0 remove ");
            m_FingerItemList.Remove( i,
            pausa;
        caso 1:
            RFingerIndex = i;
// AddSystemMessageString((m_FingerItemList[i].Name) $ " case 1 " $ string(RFingerIndex));
            pausa;
        }
    }

    if( -1 != LFingerIndex )
    {
        m_equipItem[ EQUIPITEM_LFinger ].Clear();
        m_equipItem[ EQUIPITEM_LFinger ].AddItem( m_FingerItemList[ LFingerIndex ] );
    }

    if( -1 != RFingerIndex )
    {
        m_equipItem[ EQUIPITEM_RFinger ].Clear();
        m_equipItem[ EQUIPITEM_RFinger ].AddItem( m_FingerItemList[ RFingerIndex ] );
        
        script_item.item2.Clear();
        script_item.item2.AddItem(m_FingerItemList[ RFingerIndex ]);
    }
}


function FingerItemUpdateStart()
{
    local int i;
    local int LFingerIndex, RFingerIndex;

    LFingerIndex = -1;
    RFingerIndex = -1;
// AddSystemMessageString(string(m_FingerItemList.Length) $ " FingerItemUpdateStart ");
// AddSystemMessageString(string(m_FingerItemListStart.Length) $ " FingerItemUpdateStart Start");
    for( i = 0; i < m_FingerItemListStart.Length; ++i )
    {
        switch( IsLOrRFinger( m_FingerItemListStart[i].ID ) )
        {
        case -1:
            
            LFingerIndex = i;
    // AddSystemMessageString((m_FingerItemListStart[i].Name) $ " case -1 " $ string(LFingerIndex));
            pausa;
        case 0:
    // AddSystemMessageString((m_FingerItemListStart[i].Name) $" case 0 remove ");
            m_FingerItemList.Remove( i, 1 );
            pausa;
        caso 1:
            RFingerIndex = i;
    // AddSystemMessageString((m_FingerItemListStart[i].Name) $ " case 1 " $ string(RFingerIndex));
            pausa;
        }
    }

    if( -1 != LFingerIndex )
    {
        m_equipItem[ EQUIPITEM_LFinger ].Clear();
        m_equipItem[ EQUIPITEM_LFinger ].AddItem( m_FingerItemListStart[ LFingerIndex ] );
    }

    if( -1 != RFingerIndex )
    {
        m_equipItem[ EQUIPITEM_RFinger ].Clear();
        m_equipItem[ EQUIPITEM_RFinger ].AddItem( m_FingerItemListStart[ RFingerIndex ] );
        
        script_item.item2.Clear();
        script_item.item2.AddItem(m_FingerItemListStart[ RFingerIndex ]);
    }
}

//~ function DecoItemUpdate()
//~ {
    //~ local int i;
    //~ local int LFingerIndex, RFingerIndex;

    //~ LFingerIndex = -1;
    //~ RFingerIndex = -1;

    //~ for( i = 0; i < m_DecoItemList.Length; ++i )
    //~ {
        //~ switch( IsLOrRFinger( m_FingerItemList[i].ID ) )
        //~ {
        //~ case -1:
            / /~ LFingerIndex = i;
            //~ pausa;
        //~ case 0:
            //~ m_FingerItemList.Remove( i, 1 );
            //~ pausa;
        //~ case 1:
            //~ RFingerIndex = i;
            //~ pausa;
        //~ }
    //~ }

    //~ if( -1 != LFingerIndex )
    //~ {
        //~ m_equipItem[ EQUIPITEM_LFinger ].Clear();
        //~ m_equipItem[ EQUIPITEM_LFinger ].AddItem( m_FingerItemList[ LFingerIndex ] );
    //~}

    //~ if( -1 != RFingerIndex )
    //~ {
        //~ m_equipItem[ EQUIPITEM_RFinger ].Clear();
        //~ m_equipItem[ EQUIPITEM_RFinger ].AddItem( m_FingerItemList[ RFingerIndex ] );
    //~ }
//~ }


function EquipItemUpdate( ItemInfo a_info )
{
    local ItemWindowHandle hItemWnd;
    local ItemInfo TheItemInfo;
    local bool ClearLHand;
    local ItemInfo RHand;
    local ItemInfo LHand;
    Pernas ItemInfo local;
    local ItemInfo luvas;
    Pés de ItemInfo locais;
    local ItemInfo Hair2;
    local SkillInfo TalismanSkill;
    local int;
    //~ local int j;
    local int decoIndex;
    //~ Debug ("현재 장착 슬롯 타입:" @ a_Info.SlotBitType);
    //~ Debug ("망토 착탈" @ a_Info.SlotBitType );
    
    //~ UpdateTalismanSlotActivation();
    //~ UpdateCloakSlotActivation();
    
    //~ if (!m_equipItem[ EQUIPITEM_Cloak ].IsEnableWindow())
    //~ if( m_equipItem[ EQUIPITEM_Cloak ].GetItem( 0, TheItemInfo ) )
    //~ {
        //~ Debug("Equip Item Cloak Check");
        //~ UpdateCloakSlotActivation();
    //~ }
    
    //éTalismã = false;
    SetEnchantTex(a_Info);
    switch( a_Info.SlotBitType )
    {
    case 1: // SBT_UNDERWEAR
        hItemWnd = m_equipItem[ EQUIPITEM_Underwear ];
        pausa;
    case 2: // SBT_REAR
    case 4: // SBT_LEAR
    case 6: // SBT_RLEAR
        for( i = 0; i < m_EarItemList.Length; ++i )
        {
            if( IsSameServerID(m_EarItemList[ i ].ID, a_Info.ID) )
            {
                m_EarItemList[ i ] = a_Info;
                pausa;
            }
        }

        //
        m_EarItemList.Length )
        {
            m_EarItemList.Length = m_EarItemList.Length + 1;
            m_EarItemList[m_EarItemList.Length-1] = a_Info;
            if (m_EarItemListStart.Length<2) 
            {
                m_EarItemListStart.Length = m_EarItemListStart.Length + 1;
                m_EarItemListStart[m_EarItemListStart.Length-1] = a_Info;
            }
        }
        hItemWnd = Nenhum;

        if (!isStart) EarItemUpdate();
        
        if (isStart) EarItemUpdateStart();
    
        pausa;
    case 8: // SBT_NECK
        hItemWnd = m_equipItem[ EQUIPITEM_Neck ];
        pausa;
    case 16: // SBT_RFINGER
    case 32: // SBT_LFINGER
    case 48: // SBT_RLFINGER
    
// AddSystemMessageString(string(m_FingerItemList.Length) $ " ItemUpdate ");
// AddSystemMessageString(string(m_FingerItemListStart.Length) $ " ItemUpdate Start");
        
        for( i = 0; i < m_FingerItemList.Length; ++i )
        {
            if( IsSameServerID(m_FingerItemList[ i ].ID, a_Info.ID) )
            {
                m_FingerItemList[ i ] = a_Info;
    // AddSystemMessageString((m_FingerItemList[i].Name) );
                pausa;
            }
        }

        // Como usar a função
        if( i == m_FingerItemList.Length )
        {
            m_FingerItemList.Length = m_FingerItemList.Length + 1;
            m_FingerItemList[m_FingerItemList.Length-1] = a_Info;
            if (m_FingerItemListStart.Length<2) 
            {
                m_FingerItemListStart.Length = m_FingerItemListStart.Length + 1;
                m_FingerItemListStart[m_FingerItemListStart.Length-1] = a_Info;
            }
        }

        hItemWnd = Nenhum;
        
        if (!isStart) FingerItemUpdate();
        
        if (isStart) FingerItemUpdateStart();

        pausa;
    case 64: // SBT_HEAD
        hItemWnd = m_equipItem[ EQUIPITEM_Head ];
        hItemWnd.EnableWindow();
        //~ UpdateCloakSlotActivation();
        pausa;
    case 128: // SBT_RHAND
        hItemWnd = m_equipItem[ EQUIPITEM_RHand ];
        pausa;
    case 256: // SBT_LHAND
        hItemWnd = m_equipItem[ EQUIPITEM_LHand ];
        hItemWnd.EnableWindow();
        pausa;
    case 512: // SBT_GLOVES
        hItemWnd = m_equipItem[ EQUIPITEM_Gloves ];
        hItemWnd.EnableWindow();
        // Atualiza a ativação do slot de manto quando o slot de manto não está equipado. Aplicado apenas aos slots de luvas, peito, pernas e pés.
        //~ if (!m_equipItem[ EQUIPITEM_Cloak ].IsEnableWindow())
        //~ {
            //~ UpdateCloakSlotActivation();
        //~ }
    
        break;
    case 1024: // SBT_CHEST
        hItemWnd = m_equipItem[ EQUIPITEM_Chest ];
        // Atualiza a ativação do slot de manto quando o slot de manto não está equipado. Aplicado apenas aos slots de luvas, peito, pernas e pés.
        //~ if (!m_equipItem[ EQUIPITEM_Cloak ].IsEnableWindow())
        //~ {
            //~ UpdateCloakSlotActivation();
        //~ }
    
        break;
    case 2048: // SBT_LEGS
        hItemWnd = m_equipItem[ EQUIPITEM_Legs ];
        hItemWnd.EnableWindow();
        // Atualiza a ativação do slot de manto quando o slot de manto não está equipado. Aplicado apenas aos slots de luvas, peito, pernas e pés.
        //~ if (!m_equipItem[ EQUIPITEM_Cloak ].IsEnableWindow())
        //~ {
            //~ UpdateCloakSlotActivation();
        //~ }
    
        break;
    case 4096: // SBT_FEET
        hItemWnd = m_equipItem[ EQUIPITEM_Feet ];
        hItemWnd.EnableWindow();
        // Atualiza a ativação do slot de manto quando o slot de manto não está equipado. Aplicado apenas aos slots de luvas, peito, pernas e pés.
        //~ if( m_equipItem[ EQUIPITEM_Cloak ].GetItem( 0, TheItemInfo ) )
        
        //~ {
        //~ if (!m_equipItem[ EQUIPITEM_Cloak ].IsEnableWindow())
        //~ {
            //~ Debug("Equip Item Cloak Check");
            //~ UpdateCloakSlotActivation();
        //~ }
        //~ else
        //~ {
            //~ Debug("Equip Item Cloak None");
        //~ }
    
        break;
    case 8192: // SBT_BACK
        
        hItemWnd = m_equipItem[ EQUIPITEM_Cloak ];
        //~ Debug ("망토 착탈");
        hItemWnd.EnableWindow();
        pausa;
    
    case 16384: // SBT_RLHAND
        hItemWnd = m_equipItem[ EQUIPITEM_RHand ];
        ClearLH e = true;

    //~ debug("보우건의 번호?"@ a_Info.WeaponType);
    
        // rhand 에 arco 가, lhand 에 화살 이 있는 경우 화살 을 그대로 보여 준다 - Neverdie
        if (isboworfishingrod (a_info))
        {
            if (m_equipItem [Equipitem_lhand] .getItem (0, theiteminfo))
            {
                se )
                    ClearLHand = false;
            }
        }
        
        // 보우건을 착용했을때 위와 같은 방법으로 볼트를 보여준다. 
        if( IsBowOrFishingRod( a_Info ) )
        {
            if( m_equipItem[ EQUIPITEM_LHand ].GetItem( 0, TheItemInfo ) )
            {
                if( IsArrow( TheItemInfo ) )
                    ClearLHand = false;
            }
        }
        
        
        
        if( ClearLHand ) //LRHAND 경우에도 ex1 , ex2 가 있는게 있고 없는게 있어서 따로 처리가 필요합니다. ;; -innowind
        {
            if(Len(a_Info.IconNameEx1) !=0)
            {
                RHand = a_info;
                LHand = a_info;                
                RHand.IconIndex = 1;
                LHand.IconIndex = 2;
                //RHand.IconName = a_Info.IconNameEx1;
                //LHand.IconName = a_Info.IconNameEx2;
                m_equipItem[ EQUIPITEM_RHand ].Clear();
                m_equipItem[ EQUIPITEM_RHand ].AddItem(RHand);
                //m_equipItem[ EQUIPITEM_RHand ].DisableWindow();
                m_equipItem[ EQUIPITEM_LHand ].Clear();
                m_equipItem[ EQUIPITEM_LHand ].AddItem( LHand );
                m_equipItem[ EQUIPITEM_LHand ].DisableWindow();
                script_item.item4.Clear();
                script_item.item4.AddItem(a_Info);
                script_item.item5.Clear();
                isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
                if (!isVert) script_item.Me.SetWindowSize( 145 , 34 );
                else script_item.Me.SetWindowSize( 34 , 145 );
                script_item.tex5.SetTexture("");
                hItemWnd = Nenhum; // 아이콘 이미지가 보이지 않도록 기본 설정을 없애준다.
            }
            else // 활이나 창같이 아이콘이미지랑 똑같은 경우.
            {
                m_equipItem[ EQUIPITEM_LHand ].Clear();
                m_equipItem[ EQUIPITEM_LHand ].AddItem( a_Info );
                m_equipItem[ EQUIPITEM_LHand ].DisableWindow();                
            }
            
        }
        quebrar;
    case 32768: // SBT_ONEPIECE
        hItemWnd = m_equipItem[ EQUIPITEM_Chest ];
        Pernas = a_Info;
        Legs.IconName = a_Info.IconNameEX2; //하의 아이콘을 그려준다. 
        m_equipItem[ EQUIPITEM_Legs ].Clear();        
        m_equipItem[ EQUIPITEM_Legs ].AddItem( Legs );
        m_equipItem[ EQUIPITEM_Legs ].DisableWindow();    
        pausa;
    case 65536: // SBT_HAIR
        hItemWnd = m_equipItem[ EQUIPITEM_Hair ];
        pausa;
    case 131072: // SBT_ALLDRESS
        hItemWnd = m_equipItem[ EQUIPITEM_Chest ];
        Cabelo2 = a_info; //원래는 head가 따로있어야 하지만 메모리 절약차원에서 hair2에 넣습니다. -
        Luvas innowind = a_info;
        Pernas = a_info;
        Pés = a_info;
        Hair2.IconName = a_Info.IconNameEx1;
        Gloves.IconName = a_Info.IconNameEx2;
        Legs.IconName = a_Info.IconNameEx3;
        Feet.IconName = a_Info.IconNameEx4;
        m_equipItem[ EQUIPITEM_Head ].Clear();
        m_equipItem[ EQUIPITEM_Head ].AddItem( Hair2 );
        m_equipItem[ EQUIPITEM_Head ].DisableWindow();
        m_equipItem[ EQUIPITEM_Gloves ].Clear();
        m_equipItem[ EQUIPITEM_Gloves ].AddItem( Luvas );
        m_equipItem[ EQUIPITEM_Gloves ].DisableWindow();
        m_equipItem[ EQUIPITEM_Legs ].Clear();
        m_equipItem[ EQUIPITEM_Legs ].AddItem( Legs );
        m_equipItem[ EQUIPITEM_Legs ].DisableWindow();
        m_equipItem[ EQUIPITEM_Feet ].Clear();
        m_equipItem[ EQUIPITEM_Feet ].AddItem( Pés );
        m_equipItem[ EQUIPITEM_Feet ].DisableWindow();
        pausa;
    case 262144: // SBT_HAIR2
        hItemWnd = m_equipItem[ EQUIPITEM_Hair2 ];
        hItemWnd.EnableWindow();
        pausa;
    case 524288: // SBT_HAIRALL
        hItemWnd = m_equipItem[ EQUIPITEM_Hair ];
        //Cabelo2 = a_info;
        //Hair2.IconName = a_Info.IconNameEx2;
        m_equipItem[ EQUIPITEM_Hair2 ].Clear();
        m_equipItem[ EQUIPITEM_Hair2 ].AddItem( a_info );
        m_equipItem[ EQUIPITEM_Hair2 ].DisableWindow();
        pausa;
    case 1048576: //SBT_RBracelet
        hItemWnd = m_equipItem[ EQUIPITEM_RBracelet ];
        m_equipItem[ EQUIPITEM_RBracelet ].Clear();
        m_equipItem[ EQUIPITEM_RBacelet ].AddItem( a_info );
        m_equipItem[ EQUIPITEM_RBacelet ].EnableWindow();
        
        //~ g_RBraceTurnOn = true;
        //~ RBraceletItemUpdate();
        
    

        pausa;

    case 2097152: //SBT_LBracelet
        hItemWnd = m_equipItem[ EQUIPITEM_LBracelet ];
        m_equipItem[ EQUIPITEM_LBracelet ].Clear();
        m_equipItem[ EQUIPITEM_LBracelet ].AddItem( a_info );
        m_equipItem[ EQUIPITEM_LBraclet ].EnableWindow();
        
        // Atualiza a ativação do slot do Talisman Item quando o slot do Bracelet não está equipado. 
        //~ if (!m_equipItem[ EQUIPITEM_Deco1 ].IsEnableWindow())
        //~ {
        //~ UpdateTalismanSlotActivation();
        //~ }
            
        break;

    case 4194304: //SBT_Deco1;
    
        //~ debug ("아이템 번호" @ a_info.ItemType );
// UpdateTalismanSlotActivation();
    // AddSystemMessageString(a_info.Description);
    // AddSystemMessageString(string(a_info.RelatedQuestId[0]));
    // AddSystemMessageString(string(a_info.Id.ClassID));
// // AddSystemMessageString(string(a_info.Id.ServerID));
    // AddSystemMessageString(string(GetDecoIndex(a_info.Id)));
        decoIndex = GetDecoIndex(a_info.Id);
// ParseInt( param, "RelatedQuestCnt", tmpInt);
// if(tmpInt>0)
// {
// for(i=0; i<tmpInt; ++i)
// ParseInt(param, "RelatedQuestID"$i, info.RelatedQuestID[i]);
// }

    // if ((isStart) && (a_Info))
    // {    
    //    
    // if ((decoIndex == -1) && (isStart))
    // {

    // }
    // AddSystemMessageString(string(isStart));
    
        if (decoIndex == -1)
        {
        // AddSystemMessageString("start");
            for ( i = 0; i < 6; ++i )
            {
                if (script_tali.tal[i].GetItem(0, TheItemInfo))
                {    
                // AddSystemMessageString("yacheika" @ i @ "polna");
                    if (a_info.Id.ServerID == TheItemInfo.Id.ServerID)
                    {
                // AddSystemMessageString("yacheika" @ i @ "polna e taliki sovpadaut");
                        Retorna;
// m_equipItem[ EQUIPITEM_Deco1 + i ].Clear();
// m_equipItem[ EQUIPITEM_Deco1 + i ].AddItem( a_info );
// m_equipItem[ EQUIPITEM_Deco1 + i ].EnableWindow();
    
                    //TaliWnd
//
// if (GetTalismanSkillID(a_info.ID.ClassID) != -1)
// a_info.ID.ClassID = GetTalismanSkillID(a_info.ID.ClassID);
// GetSkillInfo( a_info.ID.ClassID, 1, TalismanSkill );
// a_info.IconName = TalismanSkill.TexName;
// a_info.ItemSubType = int(EShortCutItemType.SCIT_SKILL);
//
// script_tali.tal[i].Clear();
// script_tali.tal[i].AddItem(a_info);
                    }
                }
                else
                {
            // AddSystemMessageString("yacheika" @ i @ "pusta");
                    if (i == 0) TaliInfo1 = a_info;
                    if (i == 1) TaliInfo2 = a_info;
                    if (i == 2) TaliInfo3 = a_info;
                    if (i == 3) TaliInfo4 = a_info;
                    if (i == 4) TaliInfo5 = a_info;
                    if (i == 5) TaliInfo6 = a_info;
                    m_equipItem[ EQUIPITEM_Deco1 + i ].Clear();
                    m_equipItem[ EQUIPITEM_Deco1 + i ].AddItem( a_info );
                    m_equipItem[ EQUIPITEM_Deco1 + i ].EnableWindow();
    
                    //TaliWnd

                    if (GetTalismanSkillID(a_info.ID.ClassID) != -1)
                        a_info.ID.ClassID = GetTalismanSkillID(a_info.ID.ClassID);
// if ((a_info.ID.ClassID==23754) || a_info.ID.ClassID==23755))
// if (a_info.Enchanted >3) GetSkillInfo( a_info.ID.ClassID, a_info.Enchanted -3 , Talismã Skill);
                    GetSkillInfo( a_info.ID.ClassID, 1, TalismanSkill );
                    a_info.IconName = TalismãHabilidade.TexName;
                    a_info.ItemSubType = int(EShortCutItemType.SCIT_SKILL);
            // for(i = 0 ; i<MAX_RELATED_QUEST ; i++)
            // {        
            // a_info.RelatedQuestID[i] = 0;
            // }
                
                    script_tali.tal[i].Clear();
                    script_tali.tal[i].AddItem(a_info); 
                    Retorna;
                }
                
            }
        }
    
    
        
    // }
        if (decoIndex != -1)
        {
        // AddSystemMessageString("norm rejim");
            m_equipItem[ EQUIPITEM_Deco1 + decoIndex ].Clear();
            m_equipItem[ EQUIPITEM_Deco1 + decoIndex ].AddItem( a_info );
            m_equipItem[ EQUIPITEM_Deco1 + decoIndex ].EnableWindow();

            //TaliWnd

            if (GetTalismanSkillID(a_info.ID.ClassID) != -1)
                a_info.ID.ClassID = GetTalismanSkillID(a_info.ID.ClassID);
            GetSkillInfo( a_info.ID.ClassID, 1, TalismanSkill );
            a_info.IconName = TalismãHabilidade.TexName;
            a_info.ItemSubType = int(EShortCutItemType.SCIT_SKILL);

            script_tali.tal[decoIndex].Clear();
            script_tali.tal[decoIndex].AddItem(a_info);
            for (i = 0; i < 6; i++)
            {
                if (!m_equipItem[EQUIPITEM_Deco1+i].GetItem(0,TheItemInfo))                    
                script_tali.tal[i].Clear();
            }
            //TaliWnd    
        }
// UpdateTalismanSlotActivation();
        pausa;
    case 268435456:
        hItemWnd = m_equipItem[ EQUIPITEM_Waist ];
        pausa;    
    }

    if( Nenhum != hItemWnd )
    {
        hItemWnd.Clear();
        //~ Debug("IconName="@a_Info.IconName);
        hItemWnd.AddItem( a_Info );
        //AddSystemMessageString("a_Info.Name = "$a_Info.Name);
            

        if ( a_Info.SlotBitType == 8 ) //Colar
        {
            script_item.item1.Clear();
            script_item.item1.AddItem(a_Info);
        }
        
        
        if ( (a_Info.SlotBitType == 128) || (a_Info.SlotBitType == 16384)) // RLH e wxcept Duals
        {
            script_item.item4.Clear();
            script_item.item4.AddItem(a_Info);
            
            if( IsBowOrFishingRod( a_Info ) )
            {
                if( m_equipItem[ EQUIPITEM_LHand ].GetItem( 0, TheItemInfo ) )
                {
                    if( !IsArrow( TheItemInfo ) )
                    {    
                        script_item.item5.Clear();
                        isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
                        if (!isVert) script_item.Me.SetWindowSize( 145 , 34 );
                        else script_item.Me.SetWindowSize( 34 , 145 );
                        script_item.tex5.SetTexture("");
                    }
                }
            }
            else
            {    
                if (a_Info.SlotBitType == 16384)
                {    
                    script_item.item5.Clear();
                    isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
                    if (!isVert) script_item.Me.SetWindowSize( 145 , 34 );
                    else script_item.Me.SetWindowSize( 34 , 145 );
                    script_item.tex5.SetTexture("");
                }
            }
        }
    
        
    // if (a_Info.SlotBitType == 268435456) // Cinto
    // {
// script_item.item3.Clear();
// script_item.item3.AddItem(a_Info);
    // }
        
        if ( (a_Info.SlotBitType == 256) ) // LHand
        {
            script_item.item5.Clear();
            isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
            if (!isVert) script_item.Me.SetWindowSize( 182 , 34 );
            else script_item.Me.SetWindowSize( 34 , 182 );
            script_item.tex5.SetTexture("L2UI_CH3.etc.menu_outline");
            script_item.item5.AddItem(a_Info);
        }
        
    }
    
    //~ UpdateTalismanSlotActivation();
    //~ UpdateCloakSlotActivation();
}

function HandleOpenWindow(string param)
{
    local int open;
    ParseInt(param, "Abrir", abrir);

    if(abrir==0)
        return;
    
    AbrirJanela();
}

function OpenWindow()
{
    m_hInventoryWnd.ShowWindow();
    m_hInventoryWnd.SetFocus();
}

function HandleHideWindow()
{
    HideWindow(m_WindowName);
}

function HandleAddItem(string param)
{
    //local int Order;
    informações locais do ItemInfo;
    
    ParamToItemInfo( param, info );
    //Debug ("HandleAddItem");
    if( IsEquipItem(info) )        
        EquipItemUpdate( info );
    else if( IsQuestItem(info) )
    {
        m_questItem.AddItem( info );
    }
    else
    {
        //ParseInt( param, "Ordem", Ordem);
        //debug("InvenOrder: "$string(Order));
        //InvenAddItem( info, Order );
        InvenAddItem( info );
    }
}

function HandleUpdateItem(string param)
{
// local int Order;
    tipo de string local;
    informações locais do ItemInfo;
    índice int local;
    
// debug("Inventário UpdateItem : " $ param);
    ParseString(param, "tipo", tipo);
    ParamToItemInfo( param, info );
    
// debug("bEQUIPED:"@INFO.bEquipped);
    SetEnchantTex(info);
    
    if( type == "adicionar" )
    {
        if( IsEquipItem(info) )
        {
            EquipItemUpdate( info );
        }
        else if( IsQuestItem(info) )
        {
            m_questItem.AddItem(info);
            índice = m_questItem.GetItemNum() - 1;
            while( index > 0 ) // 제일 앞으로!
            {
                m_questItem.SwapItems(index-1, index);
                --índice;
            }
        }
        else
        {
            //ParseInt( param, "Ordem", Ordem );
            //InvenAddItem( info, Order );
            InvenAddItem( info );
        }
    }
    else if( type == "update" )
    {
// debug("업데이트? " $ param);
        if( IsEquipItem(info) )
        {
// debug("이즈이큅아이템?? " $ param);
            
            if( EquipItemFind(info.ID) ) // correspondência encontrada
            {
            
// debug("이프로 ? " $ param);
                EquipItemUpdate( info );
            }
            else // não encontrado em equipItemList. Nesse caso, mova o item de InvenItemList para EquipItemList
            {
// debug("아이템 착용 프로세스1 인벤토리에서 지운다.");
// debug("엘스로?? " $ param);
                InvenDelete( info );
// debug("아이템 착용 프로세스2");
                EquipItemUpdate( info );
            }
        }
        else if( IsQuestItem(info) )
        {
            index = m_questItem.FindItem(info.ID); // ServerID
            if( index != -1 )
            {
                m_questItem.SetItem(índice, info);
            }
            else // Neste caso, o item Equipado está sendo desequipado.
            {
                EquipItemDelete(info.ID);
                m_questItem.AddItem(info);
            }
        }
        else
        {
            índice = m_invenItem.FindItem(info.ID); // ServerID
            if( index != -1 )
            {
                m_invenItem.SetItem( index, info );
            }
            else // Neste caso, o item Equipado está sendo desequipado.
            {
                EquipItemDelete(info.ID);
                //InvenAddItem( info, 0 );
                InvenAddItem( info );
            }
        }
    }
    else if( type == "delete" )
    {
        if( IsEquipItem(info) )
        {
            EquipItemDelete(info.ID);
        }
        else if( IsQuestItem(info) )
        {
            index = m_questItem.FindItem(info.ID); // ServerID
            m_questItem.DeleteItem(index);
        }
        else
        {
            InvenDelete( info );
        }
    }

    UpdateItemUsabilidade();

    SetAdenaText();
    SetItemCount();
}

function HandleItemListEnd()
{
    SetAdenaText();
    SetItemCount();
    UpdateItemUsabilidade();
}

function UpdateItemUsability()
{
    m_invenItem.SetItemUsability();
    m_questItem.SetItemUsability();
}

function HandleAddHennaInfo(string param)
{
    /*
    local int hennaID, isActive;

    ParseInt( param, "ID", hennaID );
    ParseInt( param, "bActive", isActive );
    */
    UpdateHennaInfo();
}

function HandleUpdateHennaInfo(string param)
{
    UpdateHennaInfo();
}

function UpdateHennaInfo()
{
    local int i;
    local int HennaInfoCount;
    local int HennaID;
    local int IsActive;
    local ItemInfo HennaItemInfo;
    local UserInfo PlayerInfo;
    local int ClassStep;

    if( GetPlayerInfo( PlayerInfo ) )
    {
        ClassStep = GetClassStep( PlayerInfo.nSubClass );
        switch( ClassStep )
        {
        case 1:
        case 2:
        case 3:
            m_hHennaItemWindow.SetRow( ClassStep );
            pausa;
        padrão:
            m_hHennaItemWindow.SetRow( 0 );
            pausa;
        }
    }

    m_hHennaItemWindow.Clear();

    HennaInfoCount = class'HennaAPI'.static.GetHennaInfoCount();
    if(HennaInfoCount > ClassStep)
        HennaInfoCount = ClassStep;

    for( i = 0; i < HennaInfoCount; ++i )
    {
        if( class'HennaAPI'.static.GetHennaInfo( i, HennaID, IsActive ) )
        {
            if( !class'UIDATA_HENNA'.static.GetItemName( HennaID, HennaItemInfo. Nome ) )
                pausa;
            if( !class'UIDATA_HENNA'.static.GetDescription( HennaID, HennaItemInfo.Description ) )
                break;
            if( !class'UIDATA_HENNA'.static.GetIconTex( HennaID, HennaItemInfo.IconName ) )
                break;

            if( 0 == IsActive )
                HennaItemInfo.bDisabled = true;
            senão
                HennaItemInfo.bDisabled = false;

            m_hHennaItemWindow.AddItem(HennaItemInfo);            
        }
    }
}

function SetAdenaText()
{
    local string adenaString;
    
    adenaString = MakeCostString( Int64ToString(GetAdena()) );

    m_hAdenaTextBox.SetText(adenaString);
    m_hAdenaTextBox.SetTooltipString( ConvertNumToText(Int64ToString(GetAdena())) );
    //debug("SetAdenaText " $ adenaString );
}

function UseItem(ItemWindowHandle a_hItemWindow, int index )
{
    local ItemInfo info;
    local ItemInfo item1i,item2i,item3i,item4i,item5i;

    if( a_hItemWindow.GetItem(index, info) )
    {
        if( !info.bDisabled ) // lpislhy
        {
            if( info.bRecipe ) // 제조법(레시피)를 사용할 것인지 물어본다
            {
                DialogSetReservedItemID(info.ID); // ServerID
                DialogSetID(DIALOG_USE_RECIPE);
                DialogShow(DIALOG_Modalless,DIALOG_Warning, GetSystemMessage(798));
            }
            else if( info.PopMsgNum > 0 ) // 팝업 메시지를 보여준다.
            {
                DialogSetID(DIALOG_POPUP);
                DialogSetReservedItemID(info.ID); // ServerID
                DialogShow(DIALOG_Modalless,DIALOG_Warning, GetSystemMessage(info.PopMsgNum));
            }
            else
            {
                debug ("Enviando solicitação ao servidor:");
                RequestUseItem(info.ID);

                script_item.item1.GetItem(0, item1i);
                script_item.item2.GetItem(0, item2i);
                script_item.item3.GetItem(0, item3i);
                script_item.item4.GetItem(0, item4i);
                script_item.item5.GetItem(0, item5i);
                //AddSystemMessageString("GOT ITEM INFO");
                switch (info.ID)
                {
                    case item1i.ID:
                    script_item.item1.Clear();
                    //script_tali.tal4.DisableWindow();
                    //AddSystemMessageString("4th ITEM INFO clear");
                    pausa;
                    caso item2i.ID:
                    script_item.item2.Clear();
                    //script_tali.tal4.DisableWindow();
                    //AddSystemMessageString("4th ITEM INFO clear");
                    pausa;
                    case item3i.ID:
                    script_item.item3.Clear();
                    //script_tali.tal4.DisableWindow();
                    //AddSystemMessageString("4th ITEM INFO clear");
                    pausa;
                    case item4i.ID:
                    script_item.item4.Clear();
                    //script_tali.tal4.DisableWindow();
                    //AddSystemMessageString("4th ITEM INFO clear");
                    pausa;
                    case item5i.ID:
                    script_item.item5.Clear();
                    isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
                    if (!isVert) script_item.Me.SetWindowSize( 145 , 34 );
                    else script_item.Me.SetWindowSize( 34 , 145 );
                    script_item.tex5.SetTexture("");
                    //script_tali.tal4.DisableWindow();
                    //AddSystemMessageString("4th ITEM INFO clear");
                    pausa;
                }
            }
        }
    }
}

function int GetMyInventoryLimit()
{
    //~ depurar ("MyInventoryLimit:" @ class'UIDATA_PLAYER'.static.GetInventoryLimit());
    //~ return class'UIDATA_PLAYER'.static.GetInventoryLimit();
    return m_MaxInvenCount;
}

function int GetQuestItemInventoryLimit()
{
    return m_MaxQuestItemInvenCount;
}

function SetItemCount()
{
    limite int local;
    contagem int local;
    identificador TextBoxHandle local;

// if(m_selectedItemTab == INVENTORY_ITEM_TAB)
// {
        contagem = m_invenCount + EquipItemGetItemNum();
        limite = GetMyInventoryLimit();
// }
// else if(m_selectedItemTab == QUEST_ITEM_TAB)
// {
// contagem = m_questItem.GetItemNum();
// limite = GetQuestItemInventoryLimit();
// }

    //conta = m_invenCount + m_questItem.GetItemNum() + EquipItemGetItemNum();
    //conta = m_invenCount + EquipItemGetItemNum() + m_questItem.GetItemNum();
    //conta = m_invenCount + m_questItem.GetItemNum() + EquipItemGetItemNum();

    if(CREATE_ON_DEMAND==0)
        handle = TextBoxHandle(GetHandle(m_WindowName $ ".ItemCount"));
    else
        handle = GetTextBoxHandle(m_WindowName $ ".ItemCount");

    handle.SetText("(" $ contagem $ "/" $ limite $ ")");
    debug("SetItemCount : count " $ count $ ", limit : " $ limit );
}

function HandleDialogOK()
{
    local int id;
    local INT64 reservado2;
    sID do ItemID local;
    número INT64 local;
    
    if( DialogIsMine() )
    {
        id = DialogGetID();
        reservado2 = DialogGetReservedInt2();
        numero = StringToInt64(DialogGetString());
        sID = DialogGetReservedItemID(); // ItemID
        
        if( id == DIALOG_USE_RECIPE || id == DIALOG_POPUP )
        {
            RequestUseItem(sID);
        }
        else if( id == DIALOG_DROPITEM )
        {
            RequestDropItem( sID, IntToInt64(1), m_clickLocation );
        }
        else if( id == DIALOG_DROPITEM_ASKCOUNT )
        {
            if(número == IntToInt64(0)) 
                número = IntToInt64(1); // 아무 숫자도 입력하지 않으면 1개 드랍으로 처리
            RequestDropItem( sID, number, m_clickLocation );
        }
        else if( id == DIALOG_DROPITEM_ALL )
        {
            RequestDropItem( sID, reservado2, m_clickLocation );
        }
        else if( id == DIALOG_DESTROYITEM )
        {
            RequestDestroyItem(sID, IntToInt64(1));
            PlayConsoleSound(IFST_TRASH_BASKET);
        }
        else if( id == DIALOG_DESTROYITEM_ASKCOUNT )
        {
            RequestDestroyItem(sID, número);
            PlayConsoleSound(IFST_TRASH_BASKET);
        }
        else if( id == DIALOG_DESTROYITEM_ALL)
        {
            RequestDestroyItem(sID, reservado2);
            PlayConsoleSound(IFST_TRASH_BASKET);
        }
        else if( id == DIALOG_CRYSTALLIZE )
        {
            RequestCrystallizeItem(sID,IntToInt64(1));
            PlayConsoleSound(IFST_TRASH_BASKET);
        }
        else if ( id == DIALOG_DROPITEM_PETASKCOUNT )
        {
            class'PetAPI'.static.RequestGetItemFromPet( sID, número, false);
        }
    }
}

function HandleUpdateUserInfo()
{
    if( m_hInventoryWnd.IsShowWindow() )
    {
        InvenLimitUpdate();
        EarItemUpdate();
        FingerItemUpdate();
        CheckShowCrystalizeButton();
        UpdateTalismanSlotActivation();
        UpdateCloakSlotActivation();
    }
    else
    {
        EarItemUpdate();
        FingerItemUpdate();
// UpdateTalismanSlotActivation();
    }
}

function HandleToggleWindow()
{
    if( m_hInventoryWnd.IsShowWindow())
    {
        m_hInventoryWnd.HideWindow();
        PlayConsoleSound(IFST_INVENWND_CLOSE);
    }
    else
    {
        if( IsShowInventoryWndUponEvent() )
        {
            RequestItemList();
            m_hInventoryWnd.ShowWindow();
            PlayConsoleSound(IFST_INVENWND_OPEN);
        }
    }
}

// 개인 창고, 혈맹, 화물창고, 교환창, 상점, 구매, 판매창, 개인, 개인 구매 창이 떠있을 경우 경우 무시 하는
// 다른 사람 개인 개인 상점 창 에서 내 가 구매 때 는 열려야함 사람 의 개인 상점 창 에서 내 가 구매 할 는 열려야함 열려야함 -;; -
função innowind bool IsShowInventoryWndUponEvent()
{
    local WindowHandle m_warehouseWnd;
    local WindowHandle m_privateShopWnd;
    local WindowHandle m_tradeWnd;
    local WindowHandle m_shopWnd;
    local WindowHandle m_multiSellWnd;
    local WindowHandle m_deliverWnd;
    local PrivateShopWnd m_scriptPrivateShopWnd;
    local WindowHandle m_PostBoxWnd, m_PostWriteWnd, m_PostDetailWnd_General, m_PostDetailWnd_SafetyTrade; 
    //ramificação
    local WindowHandle m_BR_CashShopWnd;
    local WindowHandle m_BR_BuyingWnd;
    //fim do ramo

    //função de comando
    local WindowHandle m_ProductInventoryWnd;

    if(CREATE_ON_DEMAND==0)
    {
        m_warehouseWnd = GetHandle( "WarehouseWnd" ); //개인창고, 혈맹창고, 화물창고
        m_privateShopWnd = GetHandle( "PrivateShopWnd" ); //개인판매, 개인구매
        m_tradeWnd = GetHandle( "TradeWnd" ); //교환
        m_shopWnd = GetHandle( "ShopWnd" ); //상점구매, 판매
        m_multiSellWnd = GetHandle( "MultiSellWnd" ); //상점구매, 판매
        m_deliverWnd = GetHandle( "DeliverWnd" ); //화물서비스
        m_scriptPrivateShopWnd = PrivateShopWnd( GetScript("PrivateShopWnd") );

        m_PostBoxWnd = GetHandle( "PostBoxWnd" );
        m_PostWriteWnd = GetHandle("PostWriteWnd");
        m_PostDetailWnd_General = GetHandle( "PostDetailWnd_General" );
        m_PostDetailWnd_SafetyTrade = GetHandle( "PostDetailWnd_SafetyTrade" );
        
        //filial
        m_BR_CashShopWnd = GetHandle( "BR_CashShopWnd" ); // 유료 상점
        m_BR_BuyingWnd = GetHandle( "BR_BuyingWnd" ); // 유료 상점
        // fim da ramificação

        m_ProductInventoryWnd = GetHandle("ProductInventoryWnd"); // 판매대행
    }
    else
    {
        m_warehouseWnd = GetWindowHandle( "WarehouseWnd" ); //개인창고, 혈맹창고, 화물창고
        m_privateShopWnd = GetWindowHandle( "PrivateShopWnd" ); //개인판매, 개인구매
        m_tradeWnd = GetWindowHandle( "TradeWnd" ); //교환
        m_shopWnd = GetWindowHandle( "ShopWnd" ); //상점구매, 판매
        m_multiSellWnd = GetWindowHandle( "MultiSellWnd" ); //상점구매, 판매
        m_deliverWnd = GetWindowHandle( "DeliverWnd" );

        m_PostBoxWnd = GetWindowHandle( "PostBoxWnd" );
        m_PostWriteWnd = GetWindowHandle( "PostWriteWnd" );
        m_PostDetailWnd_General = GetWindowHandle( "PostDetailWnd_General" );
        m_PostDetailWnd_SafetyTrade = GetWindowHandle( "PostDetailWnd_SafetyTrade" );
        
        //filial
        m_BR_CashShopWnd = GetWindowHandle( "BR_CashShopWnd" ); // 유료 상점
        m_BR_BuyingWnd = GetWindowHandle( "BR_BuyingWnd" ); // 유료 상점
        // fim da ramificação

        m_ProductInventoryWnd = GetWindowHandle( "ProductInventoryWnd" ); // 판매대행
    }

    if( m_warehouseWnd.IsShowWindow() )
        return false;

    if( m_warehouseWnd.IsShowWindow() )
        return false;

    if( m_tradeWnd.IsShowWindow() )
        return false;
    
    if( m_shopWnd.IsShowWindow() )
        return false;
    
    if( m_multiSellWnd.IsShowWindow() )
        return false;
    
    if( m_deliverWnd.IsShowWindow() )
        return false;
    
    if( m_privateShopWnd.IsShowWindow() && m_scriptPrivateShopWnd.m_type == PT_Sell )
        return false;

    if (m_PostBoxWnd.IsShowWindow() || m_PostWriteWnd.IsShowWindow() || m_PostDetailWnd_General.IsShowWindow() || m_PostDetailWnd_SafetyTrade.IsShowWindow() )
        return false;
        
    //branch
    if( m_BR_CashShopWnd.IsShowWindow() || m_BR_BuyingWnd.IsShowWindow() )
        return false;
    //fim do ramo

    if( m_ProductInventoryWnd.IsShowWindow() )
        return false;

    retorne verdadeiro;
}

function int IsLOrREar( ItemID sID )
{
    local ItemID LEar;
    local ItemID REar;
    local ItemID LFinger;
    local ItemID RFinger;

    GetAccessoryItemID( LEar, REar, LFinger, RFinger );

    if( IsSameServerID(sID, LEar) )
        return -1;
    senão if( IsSameServerID(sID, REar) )
        return 1;
    senão
        retorna 0;
}

function int IsLOrRFinger( ItemID sID )
{
    local ItemID LEar;
    local ItemID REar;
    local ItemID LFinger;
    local ItemID RFinger;

    GetAccessoryItemID( LEar, REar, LFinger, RFinger );

    if( IsSameServerID(sID, LFinger) )
        return -1;
    else if( IsSameServerID(sID, RFinger) )
        return 1;
    senão
        retorna 0;
}

function bool IsBowOrFishingRod( ItemInfo a_Info )
{
    //~ debug("보우건의 번호?"@ a_Info.WeaponType);
    
    if( 6 == a_Info.WeaponType || 10 == a_Info.WeaponType || 12 == a_Info.WeaponType )
        return true;

    retorna falso;
}

function int IsDecoItem( ItemInfo a_Info )
{
    return a_Info.SlotBitType;
}

function bool IsArrow( ItemInfo a_Info )
{
    return a_Info.bArrow;
}

//Invent Item Order, ttmayrin
function InvenLimitUpdate()
{
    local int Count;
    local int CurLimit;
    local int Limite de Invenção;
    local int Contagem Adicionada;
    local int DeletedCount;
    
    local ItemInfo ClearItem;
    local ItemInfo CurItem;

    usuário local UserInfo;

    // Default Item
    // 아이템 착용후 슬롯 리셋 
    ClearItem.IconName = "L2ui_ct1.emptyBtn";
    
    if( GetPlayerInfo( usuário ) )
    {
        
        ClearItemID( ClearItem.ID );        
        InvenLimit = user.nInvenLimit;
        CurLimit = m_invenItem.GetItemNum();
// AddSystemMessageString("User InvenLimit : "$string(InvenLimit)$"InvenItem: "$string(CurLimit));
        if( CurLimit < InvenLimit )
        {
            Contagem Adicionada = InvenLimit - CurLimit;
            for( Count=0; Count<AddedCount; Count++ )
                m_invenItem.AddItem( ClearItem );
        }
        else if (CurLimit > InvenLimit)
        {
            DeletedCount = CurLimit - InvenLimit;
            for ( Contagem = m_InvenItem.GetItemNum()- 1; Contagem >= 0; Contagem-- )
            {
                if (DeletedCount > 0)
                {
                    m_InvenItem.GetItem(Contagem, CurItem );
                    if (!IsValidItemID(CurItem.ID))
                    {
                        m_invenItem.DeleteItem(Count);
                        DeletedCount--;
                    }
                    if (DeletedCount <= 0)
                    {
                        break;
                    }                    
                }
            }
        }
    }
}

//função InvenAddItem( ItemInfo newItem, int order )
function InvenAddItem( ItemInfo newItem )
{
    local int idx;
    local int CurLimit;
    local int FindIdx;
    
    local ItemInfo curItem;
    
    FindIdx = -1;
    
    if( m_invenItem.GetItem( newItem.Order, curItem ) )
    {
        if( !IsValidItemID( curItem.ID ) )
        {
            // FindIdx = Order;
            FindIdx = newItem.Order;
        }
    }
    
    if( FindIdx < 0 )
    {
        CurLimit = m_invenItem.GetItemNum();
        for( idx=0; idx<CurLimit; idx++ )
        {
            if( m_invenItem.GetItem( idx, curItem ) )
            {
                
                if( !IsValidItemID(curItem.ID))
                {
                    FindIdx = idx;
                    pausa;
                }
            }
        }
    }
// if (newItem.Enchanted >0) newItem.ForeTexture = "icon.pvp_tab";
    //if ((newItem.Enchanted >0) && (newItem.SlotBitType >0)) newItem.ForeTexture = "pug.enchant"$ String(newItem.Enchanted);
    SetEnchantTex(novoItem);
    if( FindIdx > -1 )
    {
        
        m_invenItem.SetItem( FindIdx, newItem );
    }
    else
    {
        m_invenItem.AddItem( newItem );
    }
        
    m_invenCount++;
}

function InvenDelete( ItemInfo item )
{
    local int FindIdx;
    local ItemInfo ClearItem;
    
    ClearItemID(ClearItem.ID);
    
    //Coleção de dados de acesso
    ClearItem.IconName = "L2ui_ct1.emptyBtn";
    FindIdx = m_invenItem.FindItem( item.ID );
    if( FindIdx != -1 )
    {
        m_invenItem.SetItem( FindIdx, ClearItem );
        m_invenCount--;
    }
}

function InvenClear()
{
    m_invenItem.Clear();
    InvenLimitUpdate();
    m_invenCount = 0;
}

function SaveInventoryOrder()
{
    local int idx;
    local int Limite de Invenção;
    item ItemInfo local;
    array local<ItemID> IDList;
    array local<int> OrderList;

    InvenLimit = m_invenItem.GetItemNum();

    debug("inven_limit" $ InvenLimit);

    for( idx=0; idx<InvenLimit; idx++ )
    {
        if( m_invenItem.GetItem( idx, item ) )
        {
            if( IsValidItemID( item.ID ) )
            {
                IDList.Insert(IDList.Length, 1);
                IDList[IDList.Length-1] = item.ID;
                
                OrderList.Insert(OrderList.Length, 1);
                OrderList[OrderList.Length-1] = item.Order;
            }
        }
    }

    debug("idlist_length" $ IDList.Length);
    debug("orderlist_length" $ OrderList.Length);
    
    if( IDList.Length > 0 )
    {
        debug("Salvando Inventário");
        RequestSaveInventoryOrder( IDList, OrderList );
    }
    SetINIInt("Inventário", "extraSlots", extraSlotsCount, "PatchSettings");
    //SetINIInt("Inventory", "useExtender", useExtendedInventory, "PatchSettings");
}

function OnClickButton( string strID )
{    

    switch( strID )
    {
        case "AddAug":
        
            if (class'UIAPI_WINDOW'.static.IsShowWindow("AutoAtt"))
            {
                class'UIAPI_WINDOW'.static.HideWindow("AutoAtt");
            }
            else
            {
                class'UIAPI_WINDOW'.static.ShowWindow("AutoAtt");
                class'UIAPI_WINDOW'.static.SetFocus("AutoAtt");
            }
    // script_ref = RefineryWnd(GetScript("RefineryWnd"));
    // if (script_ref.m_RefineryWnd_Main.isShowWindow()) script_ref.m_RefineryWnd_Main.HideWindow();
        // if(m_invenTab.

    // else// 어짜피 디스에이블 할꺼지만 보험차원에서..
    // script_ref.ShowRefineryInterface();
        // }
        quebrar;
        case "DelAug":
            if (class'UIAPI_WINDOW'.static.IsShowWindow("AutoItemEnchant"))
            {
                class'UIAPI_WINDOW'.static.HideWindow("AutoItemEnchant");
            }
            else
            {
                class'UIAPI_WINDOW'.static.ShowWindow("AutoItemEnchant");
                class'UIAPI_WINDOW'.static.SetFocus("AutoItemEnchant");
            }
// script_unref = UnrefineryWnd(GetScript("UnrefineryWnd"));
    // if (script_unref.m_UnRefineryWnd_Main.isShowWindow()) script_unref.m_UnRefineryWnd_Main.HideWindow();
        // if (m_inventab.gettopindex () == 0) // 인벤토리 아이템 텝 이 활성 화 되어 있을 때 만
        // {// 어짜피 디스 에이블 할꺼지만 보험 차원 에서 ..
// else
    // executevent (ev_showrefineryCancelInteface);
        // }
        quebrar;
        case "sortbutton":
        // if (m_inventab.gettopindex () == 0) // 인벤토리 아이템 텝 이 활성 화 되어 있을 때 만
        // {// 어짜피 디스 에이블 할꺼지만 보험 차원 에서 ..
                sortItem (m_invenitem); //função de comando
                SaveInventoryOrder();
        // }
        quebrar;
    // case "InventoryTab0": // 인벤토리 아이템 텝 클릭
    // m_sortBtn.EnableWindow();
    // m_selectedItemTab = INVENTORY_ITEM_TAB;
    // SetItemCount();
    // pausa;
    // case "InventoryTab1": // 퀘스트 아이템 텝 클릭
    // m_sortBtn.DisableWindow();
    // m_selectedItemTab = QUEST_ITEM_TAB;
    // SetItemCount();
    // pausa;
        case "BtnWindowExpand":
            SwitchExtendedInventory();
            SetItemCount();
            RequestItemList();
            SortItem(m_invenItem); //função de comando
            SaveInventoryOrder();
            pausa;
        //~ case "BtnZoomReset":
            //~ debug ("ResetScale");
            //~ m_ObjectViewport.SetCharacterScale(0.4f);
            //~ pausa;
        
    }
}

function OnLButtonDown (WindowHandle a_WindowHandle, int X, int Y)
{
    //~ depuração ("ClickedDown");
    
    if (a_WindowHandle == m_BtnRotateLeft)
    {
        //~ debug ("ClickedDown Button Left");
        //~ class'UIAPI_CharacterViewportWindow'.static.StartRotation( "InventoryWnd.ObjectViewport", "false");
        m_ObjectViewport.StartRotation(false);
    }
    else if (a_WindowHandle == m_BtnRotateRight)
    {
        //~ debug ("ClickedDown Button Right");
        //~ class'UIAPI_CharacterViewportWindow'.static.StartRotation( "InventoryWnd.ObjectViewport", "true");
        m_ObjectViewport.StartRotation(true);

    //~ else if (a_WindowHandle == m_BtnZoomIn)
    //~ {
        //~ m_ObjectViewport.StartZoom(false);
    //~ }
    //~ else if (a_WindowHandle == m_BtnZoomOut)
    //~ {
        //~ m_ObjectViewport.StartZoom(true);
    //~ }
}

function OnLButtonUp (WindowHandle a_WindowHandle, int X, int Y)
{
    //~ debug ("ClickedUp");
    if (a_WindowHandle == m_BtnRotateLeft)
    {
        //~ class'UIAPI_CharacterViewportWindow'.static.EndRotation( "InventoryWnd.ObjectViewport");
        m_ObjectViewport.EndRotation();
    }
    else if (a_WindowHandle == m_BtnRotateRight)
    {
        //~ class'UIAPI_CharacterVisewportWindow'.static.EndRotation( "InventoryWnd.ObjectViewport");
        m_ObjectViewport.EndRotation();
    }
    //~ else if (a_WindowHandle == m_BtnZoomIn)
    //~ {
        //~ m_ObjectViewport.EndZoom();
    //~}
    //~ else if (a_WindowHandle == m_BtnZoomOut)
    //~ {
        //~ m_ObjectViewport.EndZoom();
    //~ }
}


//#ifdef CT26P3
function SortItem( ItemWindowHandle ItemWnd)
{
    local int i, j;
    local int invenLimit;
    item ItemInfo local;
    local EItemType eItemType;


    local int numAtivo;
    local int numArma;
    local int numArmor;
    local int numAccessary;
    local int numEtcItem;

    local int numAncientCrystalEnchantAm;
    local int numAncientCrystalEnchantWp;
    local int numCrystalEnchantAm;
    local int numCrystalEnchantWp;

    local int numBlessEnchantAm;
    local int numBlessEnchantWp;
    local int numEnchantAm;
    local int numEnchantWp;

    local int numIncEnchantPropAm;
    local int numIncEnchantPropWp;

    local int numPotion;
    local int numElixir;

    local int numSeta;
    local int numBolt;

    local int numReceita;

    local int próximoSlot;

    local int testInt;


    local Array<ItemInfo> AssetList;
    local Array<ItemInfo> Lista de Armas;
    local Array<ItemInfo> ArmorList;
    local Array<ItemInfo> AccesaryList;
    local Array<ItemInfo> EtcItemList;

    // etc item 구분
    local Array<ItemInfo> AncientCrystalEnchantAmList;
    local Array<ItemInfo> AncientCrystalEnchantWpList;
    local Array<ItemInfo> CrystalEnchantAmList;
    local Array<ItemInfo> CrystalEnchantWpList;

    local Array<ItemInfo> BlessEnchantAmList;
    local Array<ItemInfo> BlessEnchantWpList;

    local Array<ItemInfo> EnchantAmList;
    //local Array<ItemInfo> EnchantAttrList;
    local Array<ItemInfo> EnchantWpList;

    local Array<ItemInfo> IncEnchantPropAmList;
    local Array<ItemInfo> IncEnchantPropWpList;

    local Array<ItemInfo> PotionList;
    local Array<ItemInfo> ElixirList;

    local Array<ItemInfo> ArrowList;
    local Array<ItemInfo> BoltList;

    local Array<ItemInfo> RecipeList;

    // 무게 순 정렬을 위한 변수
    local ItemInfo temp;

    debug("Classificando o item inventado");

    numAtivo = 0;
    numArma = 0;
    numArmadura = 0;
    numAcessório = 0;
    numPoção = 0;
    numEtcItem = 0;

    numAncientCrystalEnchantAm = 0;
    numAncientCrystalEnchantWp = 0;
    numCrystalEnchantAm = 0;
    numCrystalEnchantWp = 0;
    numBlessEnchantAm = 0;
    numBlessEnchantWp = 0;
    numIncEnchantPropAm = 0;
    numIncEnchantPropWp = 0;
    numEnchantAm = 0;
    numEnchantWp = 0;
    numPoção = 0;
    numElixir = 0;
    numSeta = 0;
    numBolt = 0;
    numReceita = 0;

    próximoSlot = 0;

    invenLimit = m_invenItem.GetItemNum();

    // 1. 아이템들을 종류별로 구분
    for (i = 0; i < invenLimit; ++i)
    {
        m_invenItem.GetItem(i, item);

        if(!IsValidItemID(item.ID))
        {
            continue;
        }

        eItemType = EItemType(item.ItemType);

        switch (eItemType)
        {
        case ITEM_ASSET:
            AssetList[numAsset] = item;
            numAtivo = numAtivo + 1;
            pausa;

        case ITEM_WEAPON:
            WeaponList[numWeapon] = item;
            numArma = numArma + 1;
            pausa;

        case ITEM_ARMOR:
            ArmorList[numArmor] = item;
            numArmadura = numArmadura + 1;
            pausa;

        case ITEM_ACCESSARY:
            AccesaryList[numAccessary] = item;
            numAcessório = numAcessório + 1;
            pausa;

        case ITEM_ETCITEM:
            testInt = item.ItemSubType;
            //debug("gggggggg" $ testInt);
            //debug(int(item.ItemSubType));
            switch (EEtcItemType(item.ItemSubType))
            {
            case ITEME_ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_AM:
                AncientCrystalEnchantAmList[numAncientCrystalEnchantAm] = item;
                numAncientCrystalEnchantAm = numAncientCrystalEnchantAm + 1;
                pausa;
            case ITEME_ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP:
                AncientCrystalEnchantWpList[numAncientCrystalEnchantWp] = item;
                numAncientCrystalEnchantWp = numAncientCrystalEnchantWp + 1;
                pausa;
            case ITEME_ENCHT_ATTR_CRYSTAL_ENCHANT_AM: CrystalEnchantAmList
                [numCrystalEnchantAm] = item;
                numCrystalEnchantAm = numCrystalEnchantAm + 1;
                pausa;
            case ITEME_ENCHT_ATTR_CRYSTAL_ENCHANT_WP: CrystalEnchantWpList
                [numCrystalEnchantWp] = item;
                numCrystalEnchantWp = numCrystalEnchantWp + 1;
                pausa;
            case ITEME_BLESS_ENCHT_AM:
                BlessEnchantAmList[numBlessEnchantAm] = item;
                numBlessEnchantAm = numBlessEnchantAm + 1;
                pausa;
            caso ITEME_BLESS_ENCHT_WP:
                BlessEnchantWpList[numBlessEnchantWp] = item;
                numBlessEnchantWp = numBlessEnchantWp + 1;
                pausa;
            case ITEME_ENCHT_AM: EnchantAmList
                [numEnchantAm] = item;
                numEnchantAm = numEnchantAm + 1;
                pausa;
            case ITEME_ENCHT_WP:
                EnchantWpList[numEnchantWp] = item;
                numEnchantWp = numEnchantWp + 1;
                pausa;
            case ITEME_ENCHT_ATTR_INC_PROP_ENCHT_AM:
                IncEnchantPropAmList[numIncEnchantPropAm] = item;
                numIncEnchantPropAm = numIncEnchantPropAm + 1;
                pausa;
            case ITEME_ENCHT_ATTR_INC_PROP_ENCHT_WP:
                IncEnchantPropWpList[numIncEnchantPropWp] = item;
                numIncEnchantPropWp = numIncEnchantPropWp + 1;
                pausa;
            case ITEME_POTION:
                PotionList[numPotion] = item;
                numPotion = numPotion + 1;
                pausa;
            case ITEME_ELIXIR:
                ElixirList[numElixir] = item;
                numElixir = numElixir + 1;
                pausa;
            case ITEME_ARROW:
                ArrowList[numArrow] = item;
                numSeta = numSeta + 1;
                pausa;
            case ITEME_BOLT:
                BoltList[numBolt] = item;
                numBolt = numBolt + 1;
                pausa;
            case ITEME_RECIPE:
                RecipeList[numRecipe] = item;
                numReceita = numReceita + 1;
                pausa;
            padrão:
                EtcItemList[numEtcItem] = item;
                numEtcItem = numEtcItem + 1;
                pausa;
            }
            quebrar;

        default:
            debug("hein???");
            EtcItemList[numEtcItem] = item;
            numEtcItem = numEtcItem + 1;
            pausa;
        }
    }

    // 2. 구분 된 아이템들을 각 리스트 당 무게순으로 정렬
    for (i = 0; i < numAsset; ++i)
    {
        for (j = 0; j < numAsset - i; ++j)
        {
            if (j < numAsset - 1)
            {
                if (AssetList[j].Weight <AssetList[j + 1].Weight)
                {
                    temp = AssetList[j];
                    ListadeAtivos[j] = ListadeAtivos[j + 1];
                    Lista de ativos[j + 1] = temp;
                }
            }
        }
    }
    for (i = 0; i < numWeapon; ++i)
    {
        for (j = 0; j < numWeapon - i; ++j)
        {
            if (j < numWeapon - 1)
            {
                if (Lista de Armas[j]. Peso < Lista de Armas[j + 1]. Peso)
                {
                    temp = Lista de Armas[j];
                    Lista de Armas[j] = Lista de Armas[j + 1];
                    Lista de Armas[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numArmor; ++i)
    {
        for (j = 0; j < numArmor - i; ++j)
        {
            if (j < numArmor - 1)
            {
                if (ArmorList[j].Weight < ArmorList[j + 1].Weight)
                {
                    temp = ArmorList[j];
                    ArmorList[j] = ArmorList[j + 1];
                    ArmorList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numAccessary; ++i)
    {
        for (j = 0; j < numAccessary - i; ++j)
        {
            if (j < numAccessary - 1)
            {
                if (AccessaryList[j].Weight < Lista de acessórios[j + 1]. Peso)
                {
                    temp = Lista de acessórios[j];
                    ListaAcessórios[j] = ListaAcessórios[j + 1];
                    Lista de acessórios[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numAncientCrystalEnchantAm; ++i)
    {
        for (j = 0; j < numAncientCrystalEnchantAm - i; ++j)
        {
            if (j < numAncientCrystalEnchantAm - 1)
            {
                if (AncientCrystalEnchantAmList[j].Weight < AncientCrystalEnchantAmList[j + 1].Weight)
                {
                    temp = AncientCrystalEnchantAmList[j];
                    AncientCrystalEnchantAmList[j] = AncientCrystalEnchantAmList[j + 1];
                    AncientCrystalEnchantAmList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numAncientCrystalEnchantWp; ++i)
    {
        for (j = 0; j < numAncientCrystalEnchantWp - i; ++j)
        {
            if (j < numAncientCrystalEnchantWp - 1)
            {
                if (AncientCrystalEnchantWpList[j].Weight < AncientCrystalEnchantWpList[j + 1].Weight)
                {
                    temp = AncientCrystalEnchantWpList[j];
                    AncientCrystalEnchantWpList[j] = AncientCrystalEnchantWpList[j + 1];
                    AncientCrystalEnchantWpList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numCrystalEnchantAm; ++i)
    {
        for (j = 0; j < numCrystalEnchantAm - i; ++j)
        {
            if (j < numCrystalEnchantAm - 1)
            {
                if (CrystalEnchantAmList[j].Weight < CrystalEnchantAmList[j + 1].Weight)
                {
                    temp = CrystalEnchantAmList[j];
                    CrystalEnchantAmList[j] = CrystalEnchantAmList[j + 1];
                    CrystalEnchantAmList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numCrystalEnchantWp; ++i)
    {
        for (j = 0; j < numCrystalEnchantWp - i; ++j)
        {
            if (j < numCrystalEnchantWp - 1)
            {            
                if (CrystalEnchantWpList[j].Weight < CrystalEnchantWpList[j + 1].Weight)
                {
                    temp = CrystalEnchantWpList[j];
                    CrystalEnchantWpList[j] = CrystalEnchantWpList[j + 1];
                    CrystalEnchantWpList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numBlessEnchantAm; ++i)
    {
        for (j = 0; j < numBlessEnchantAm - i; ++j)
        {
            if (j < numBlessEnchantAm - 1)
            {
                if (BlessEnchantAmList[j].Weight < BlessEnchantAmList[j + 1].Weight)
                {
                    temp = BlessEnchantAmList[j];
                    BlessEnchantAmList[j] = BlessEnchantAmList[j + 1];
                    BlessEnchantAmList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numBlessEnchantWp; ++i)
    {
        for (j = 0; j < numBlessEnchantWp - i; ++j)
        {
            if (j < numBlessEnchantWp - 1)
            {
                if (BlessEnchantWpList[j].Weight < BlessEnchantWpList[j + 1].Weight)
                {
                    temp = BlessEnchantWpList[j];
                    BlessEnchantWpList[j] = BlessEnchantWpList[j + 1];
                    BlessEnchantWpList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numEnchantAm; ++i)
    {
        for (j = 0; j < numEnchantAm - i; ++j)
        {
            if (j < numEnchantAm - 1)
            {
                if (EnchantAmList[j].Weight < EnchantAmList[j + 1].Weight)
                {
                    temp = EnchantAmList[j];
                    EnchantAmList[j] = EnchantAmList[j + 1];
                    EnchantAmList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numEnchantWp; ++i)
    {
        for (j = 0; j < numEnchantWp - i; ++j)
        {
            if (j < numEnchantWp - 1)
            {
                if (EnchantWpList[j].Weight < EnchantWpList[j + 1].Weight)
                {
                    temp = EnchantWpList[j];
                    EnchantWpList[j] = EnchantWpList[j + 1];
                    EnchantWpList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numIncEnchantPropAm; ++i)
    {
        for (j = 0; j < numIncEnchantPropAm - i; ++j)
        {
            if (j < numIncEnchantPropAm - 1)
            {
                if (IncEnchantPropAmList[j].Weight < IncEnchantPropAmList[j + 1].Weight)
                {
                    temp = IncEnchantPropAmList[j];
                    IncEnchantPropAmLista[j] = IncEnchantPropAmLista[j + 1];
                    IncEnchantPropAmList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numIncEnchantPropWp; ++i)
    {
        for (j = 0; j < numIncEnchantPropWp - i; ++j)
        {
            if (j < numIncEnchantPropWp - 1)
            {
                if (IncEnchantPropWpList[j].Weight < IncEnchantPropWpList[j + 1].Weight)
                {
                    temp = IncEnchantPropWpList[j];
                    IncEnchantPropWpList[j] = IncEnchantPropWpList[j + 1];
                    IncEnchantPropWpList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numPotion; ++i)
    {
        for (j = 0; j < numPotion - i; ++j)
        {
            if (j < numPotion - 1)
            {
                if (PotionList[j].Weight < Lista de Poções[j + 1]. Peso)
                {
                    temp = Lista de Poções[j];
                    Lista de Poções[j] = Lista de Poções[j + 1];
                    Lista de Poções[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numElixir; ++i)
    {
        for (j = 0; j < numElixir - i; ++j)
        {
            if (j < numElixir - 1)
            {
                if (ListaElixir[j]. Peso < Lista de Elixir[j + 1]. Peso)
                {
                    temp = Lista de Elixir[j];
                    Lista de Elixir[j] = Lista de Elixir[j + 1];
                    ElixirList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numArrow; ++i)
    {
        for (j = 0; j < numArrow - i; ++j)
        {
            if (j < numArrow - 1)
            {
                if (ArrowList[j].Weight < ArrowList[j + 1].Weight)
                {
                    temp = ArrowList[j];
                    ArrowList[j] = ArrowList[j + 1];
                    ArrowList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numBolt; ++i)
    {
        for (j = 0; j < numBolt - i; ++j)
        {
            if (j < numBolt - 1)
            {
                if (BoltList[j].Weight < BoltList[j + 1].Weight)
                {
                    temp = BoltList[j];
                    BoltList[j] = BoltList[j + 1];
                    BoltList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numRecipe; ++i)
    {
        for (j = 0; j < numRecipe - i; ++j)
        {
            if (j < numRecipe - 1)
            {
                if (RecipeList[j].Weight < RecipeList[j + 1].Weight)
                {
                    temp = BoltList[j];
                    ListaLista de Receitas[j] = ListaLista de Receitas[j + 1];
                    Lista de receitas[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numEtcItem; ++i)
    {
        for (j = 0; j < numEtcItem - i; ++j)
        {
            if (j < numEtcItem - 1)
            {
                if (EtcItemList[j].Weight < EtcItemList[j + 1].Weight)
                {
                    temp = EtcItemList[j];
                    EtcItemList[j] = EtcItemList[j + 1];
                    EtcItemList[j + 1] = temp;
                }
            }
        }
    }

    // 3. 인벤에 다시 삽입
    InvenClear();
    
    for (i = 0; i < numAsset; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, AssetList[i]);
    }    
    nextSlot = nextSlot + numAsset;

    for (i = 0; i < numWeapon; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, WeaponList[i]);
    }
    próximoSlot = próximoSlot + numArma;

    for (i = 0; i < numArmor; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, ArmorList[i]);
    }
    nextSlot = nextSlot + numArmor;

    for (i = 0; i < numAccessary; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, AccesaryList[i]);
    }
    nextSlot = nextSlot + numAccessary;

    for (i = 0; i < numAncientCrystalEnchantAm; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, AncientCrystalEnchantAmList[i]);
    }
    nextSlot = nextSlot + numAncientCrystalEnchantAm;

    for (i = 0; i < numAncientCrystalEnchantWp; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, AncientCrystalEnchantWpList[i]);
    }
    nextSlot = nextSlot + numAncientCrystalEnchantWp;

    for (i = 0; i < numCrystalEnchantAm; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, CrystalEnchantAmList[i]);
    }
    nextSlot = nextSlot + numCrystalEnchantAm;

    for (i = 0; i < numCrystalEnchantWp; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, CrystalEnchantWpList[i]);
    }
    nextSlot = nextSlot + numCrystalEnchantWp;

    for (i = 0; i < numBlessEnchantAm; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, BlessEnchantAmList[i]);
    }
    nextSlot = nextSlot + numBlessEnchantAm;

    for (i = 0; i < numBlessEnchantWp; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, BlessEnchantWpList[i]);
    }
    nextSlot = nextSlot + numBlessEnchantWp;

    for (i = 0; i < numEnchantAm; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, EnchantAmList[i]);
    }
    nextSlot = nextSlot + numEnchantAm;

    for (i = 0; i < numEnchantWp; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, EnchantWpList[i]);
    }
    nextSlot = nextSlot + numEnchantWp;

    for (i = 0; i < numIncEnchantPropAm; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, IncEnchantPropAmList[i]);
    }
    nextSlot = nextSlot + numIncEnchantPropAm;

    for (i = 0; i < numIncEnchantPropWp; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, IncEnchantPropWpList[i]);
    }
    nextSlot = nextSlot + numIncEnchantPropWp;

    for (i = 0; i < numPotion; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, PotionList[i]);
    }
    nextSlot = nextSlot + numPotion;

    for (i = 0; i < numElixir; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, ElixirList[i]);
    }
    nextSlot = nextSlot + numElixir;

    for (i = 0; i < numArrow; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, ArrowList[i]);
    }
    nextSlot = nextSlot + numSeta;

    for (i = 0; i < numBolt; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, BoltList[i]);
    }
    nextSlot = nextSlot + numBolt;

    for (i = 0; i < numRecipe; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, RecipeList[i]);
    }
    nextSlot = nextSlot + numRecipe;

    for (i = 0; i < numEtcItem; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, EtcItemList[i]);
    }
    nextSlot = nextSlot + numEtcItem;
    
    // TTP #42420 m_invenCount를 InvenClear() 에서 초기화하므로 다시 셋팅해 줘야 합니다. - gorilazina 10.10.29.
    m_invenCount = nextSlot;

    debug("[Sorting Inven Item]" $ nextSlot $ "itens ordenados completos!!");
}
//#endif //CT26P3 - gorillazin

function UpdateTalismanSlotActivation()
{
    local int Contagem;
    local int;
    usuário local UserInfo;
    local ItemInfo DisableItem;
    
    DisableItem.IconName = "L2UI_CT1.Inventory_DF_TalismanSlot_Disable"; //Encontre isso e preencha com o final.
    
    
    
    if( GetPlayerInfo( user ) )
    {
        Count = user.nTalismanNum;
        //~ debug ("Ativação do Talismã" @ user.nTalismanNum);
        
        if (Contagem > 0)
        {
            for (i = 0; i<Contagem; i++)
            {
                m_Talisman_Disable[ i ].HideWindow();
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].Clear();
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].AddItem( DisableItem );
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].DisableWindow();
                m_equipItem[ EQUIPITEM_Deco1 + i ].EnableWindow();
            }
        }
        else
        {
            for (i = 0; i<6; i++)
            {
                m_Talisman_Disable[ i ].ShowWindow();
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].Clear();
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].AddItem( DisableItem );
                m_equipItem[ EQUIPITEM_Deco1 + i ].DisableWindow();
            }
        }
        //~ {
            //~ for (i = 0; i<Count; i++)
            //~ {
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].ClearItem();
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].AddItem( DisableItem );
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].DisableWindow();
            //~ }
        //~ }
    }
} 
    
function UpdateCloakSlotActivation()
{
    //~ local int i;
    usuário local UserInfo;
    local ItemInfo DisableItem;
    
    DisableItem.IconName = "L2UI_CT1.Inventory_DF_CloakSlot_Disable"; //Encontre isso e preencha com o final.
    
    if( GetPlayerInfo( user ) )
    {
        //~ depurar ("FullArmor" @ user.nFullArmor);
        if (user.nFullArmor > 0)
        {
            m_CloakSlot_Disable.HideWindow();

            //~ for (i = 0; i<Count; i++)
            //~ {
                //~ m_equipItem[ EQUIPITEM_Cloak ].Clear();
                m_equipItem[ EQUIPITEM_Cloak ].EnableWindow();
            //~ }
        }
        else
        {

            m_CloakSlot_Disable.ShowWindow();
            m_equipItem[ EQUIPITEM_Cloak ].DisableWindow();
        }
    }
    else
    {
        //~ debug("UserInfoRetrival Failed");
    }
}


function HandleSetMaxCount(string param)
{
    local int ExtraBeltCount;
    ParseInt (param, "Inventário", m_MaxInvenCount);
    ParseInt (param, "questItem", m_MaxQuestItemInvenCount);
    ParseInt (param, "extrabelt", ExtraBeltCount);
    //~ debug ("SetMaxCount Called");
    m_invenItem.SetExpandItemNum(0, ExtraBeltCount);
    InvenLimitUpdate();
    SetItemCount();
}


function HandleChangeCharacterPawn(string param)
{
    ParseInt (param, "MeshType", m_MeshType);
    switch (m_MeshType)
    {
        case 0:
        // 휴먼_전사_남
        m_ObjectViewport.SetCharacterScale(1.f);
        m_ObjectViewport.SetCharacterOffsetX(-2);
        m_ObjectViewport.SetCharacterOffsetY(-6);                                       
        pausa;
        case 1:
        // 휴먼_전사_여
        m_ObjectViewport.SetCharacterScale(1.03f);
        m_ObjectViewport.SetCharacterOffsetX(-2);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        caso 8:
        // 휴먼_법사_남
        m_ObjectViewport.SetCharacterScale(1.047f);
        m_ObjectViewport.SetCharacterOffsetX(2);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        case 9:
        // 휴먼_법사_여
        m_ObjectViewport.SetCharacterScale(1.07f);
        m_ObjectViewport.SetCharacterOffsetX(-1);
        m_ObjectViewport.SetCharacterOffsetY(-9);                                       
        pausa;
        case 6:
        // 엘프_전사_남
        m_ObjectViewport.SetCharacterScale(0.98f);
        m_ObjectViewport.SetCharacterOffsetX(-2);
        m_ObjectViewport.SetCharacterOffsetY(-7);                                       
        pausa;
        case 7:
        // 엘프_전사_여
        m_ObjectViewport.SetCharacterScale(1.04f);
        m_ObjectViewport.SetCharacterOffsetX(-4);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        // case q
        // 엘프_법사_남
        // SetCharacterOffsetX(-2);
        // SetCharacterOffsetY(-7);
        // 엘프_법사_여
        // SetCharacterOffsetX(-4);
        // SetCharacterOffsetY(-8);
        case 2:
        // 다엘_전사_남
        m_ObjectViewport.SetCharacterScale(0.99f);
        m_ObjectViewport.SetCharacterOffsetX(-1);
        m_ObjectViewport.SetCharacterOffsetY(-7);                                       
        pausa;
        case 3:
        // 다엘_전사_여
        m_ObjectViewport.SetCharacterScale(1.015f);
        m_ObjectViewport.SetCharacterOffsetX(-1);
        m_ObjectViewport.SetCharacterOffsetY(-7);
        pausa;
        // 다엘_법사_남
        // SetCharacterOffsetX(-1);
        // SetCharacterOffsetY(-7);
        // 다엘_법사_여
        // SetCharacterOffsetX(-1);
        // SetCharacterOffsetY(-7);
        case 10:
        // 오크_전사_남                             
        m_ObjectViewport.SetCharacterScale(0.953f);
        m_ObjectViewport.SetCharacterOffsetX(0);
        m_ObjectViewport.SetCharacterOffsetY(-9);                                       
        pausa;
        case 11:
        // 오크_전사_여
        m_ObjectViewport.SetCharacterScale(0.97f);
        m_ObjectViewport.SetCharacterOffsetX(2);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        case 12:
        // 오크_법사_남
        m_ObjectViewport.SetCharacterScale(0.955f);
        m_ObjectViewport.SetCharacterOffsetX(-2);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        case 13:
        // 오크_법사_여
        m_ObjectViewport.SetCharacterScale(0.985f);
        m_ObjectViewport.SetCharacterOffsetX(0);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        case 4:
        // 드워프_
        남 m_ObjectViewport.SetCharacterScale(1.043f);
        m_ObjectViewport.SetCharacterOffsetX(0);
        m_ObjectViewport.SetCharacterOffsetY(-2);                                       
        pausa;
        case 5:
        // 드워프_여
        m_ObjectViewport.SetCharacterScale(1.09f);
        m_ObjectViewport.SetCharacterOffsetX(0);
        m_ObjectViewport.SetCharacterOffsetY(-6);                                       
        pausa;
        case 14:
        // 카마엘_
        남 m_ObjectViewport.SetCharacterScale(0.993f);
        m_ObjectViewport.SetCharacterOffsetX(-5);
        m_ObjectViewport.SetCharacterOffsetY(-6);                                       
        pausa;
        case 15:
        // 카마엘_여
        m_ObjectViewport.SetCharacterScale(1.01f);
        m_ObjectViewport.SetCharacterOffsetX(0);
        m_ObjectViewport.SetCharacterOffsetY(-6);                                       
        pausa;
    }
}

function OnTimer(int TimerID)
{
// local ItemInfo TheItemInfo;
// local ItemInfo TheItemInfoClear;
    switch (TimerID)
    {
        case 1130: 
// AddSystemMessageString("1130 trabalho");

        if (GetDecoIndex(TaliInfo1.Id) != -1) EquipItemUpdate(TaliInfo1);
        if (GetDecoIndex(TaliInfo2.Id) != -1) EquipItemUpdate(TaliInfo2);
        if (GetDecoIndex(TaliInfo3.Id) != -1) EquipItemUpdate(TaliInfo3);
        if (GetDecoIndex(TaliInfo4.Id) != -1) EquipItemUpdate(TaliInfo4);    
        if (GetDecoIndex(TaliInfo5.Id) != -1) EquipItemUpdate(TaliInfo5);    
        if (GetDecoIndex(TaliInfo6.Id) != -1) EquipItemUpdate(TaliInfo6);    
        FingerItemUpdateStart();
        EarItemUpdateStart();
// UpdateTalismanSlotActivation();
    // m_equipItem[17].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
    // m_equipItem[18].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
    // m_equipItem[19].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
    // m_equipItem[20].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
    // m_equipItem[21].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
    // m_equipItem[22].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
        ExecuteEvent(EV_InventoryUpdateItem);
        m_hInventoryWnd.KillTimer(1130);
        pausa;
// case 1131: 
    
// AddSystemMessageString("1130 trabalho");
    //FingerItemUpdateStart();
    // EarItemUpdateStart();
    // UpdateTalismanSlotActivation();
    /* m_equipItem[17].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name);
            TheItemInfo = TheItemInfoClear;
            m_equipItem[18].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name);
            TheItemInfo = TheItemInfoClear;
            m_equipItem[19].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name);
            TheItemInfo = TheItemInfoClear;
            m_equipItem[20].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name);
            TheItemInfo = TheItemInfoClear;
            m_equipItem[21].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name);
            TheItemInfo = TheItemInfoClear;
            m_equipItem[22].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name); */
    // TheItemInfo = TheItemInfoClear;
    // ExecuteEvent(EV_InventoryUpdateItem);
// m_hInventoryWnd.KillTimer(1131);
    // m_hInventoryWnd.SetTimer(1131,3000);
        
// pausa;
    }
}

propriedades padrão
{
}

zaken vs tatuagem.jpg

Edited by SkyFielD
Link to comment
Share on other sites

what ?

12 hours ago, SkyFielD said:
classe InventoryWnd estende UICommonAPI;

const DIALOG_USE_RECIPE = 1111; // 레시피를 사용할 것인지를 물을 때
const DIALOG_POPUP = 2222; // 아이템사용 시 지정된 팝업메시지를 띄울 때
const DIALOG_DROPITEM = 3333; // 아이템을 바닥에 버릴 때(한개)
const DIALOG_DROPITEM_ASKCOUNT = 4444; // 아이템을 바닥에 버릴 때(여러개, 개수를 물어본다)
const DIALOG_DROPITEM_ALL = 5555; // 아이템을 바닥에 버릴 때(MoveAll 상태일 때)
const DIALOG_DESTROYITEM = 6666; // 아이템을 휴지통에 버릴 때(한개)
const DIALOG_DESTROYITEM_ALL = 7777; // 아이템을 휴지통에 버릴 때(MoveAll 상태일 때)
const DIALOG_DESTROYITEM_ASKCOUNT = 8888; // 아이템을 휴지통에 버릴 때(여러개, 개수를 물어본다)
const DIALOG_CRYSTALLIZE = 9999; // 아이템을 결정화 할때
const DIALOG_NOTCRYSTALLIZE = 9998; // 결정화가 불가능하다는 경고
const DIALOG_DROPITEM_PETASKCOUNT = 10000; // 펫인벤에서 아이템이 드롭되었을 때

const EQUIPITEM_Underwear = 0;
const EQUIPITEM_Head = 1;
const EQUIPITEM_Cabelo = 2;
const EQUIPITEM_Cabelo2 = 3;
const EQUIPITEM_Pescoço = 4;
const EQUIPITEM_RHe = 5;
const EQUIPITEM_Peito = 6;
const EQUIPITEM_LHe = 7;
const EQUIPITEM_REar = 8;
const EQUIPITEM_LEar = 9;
const EQUIPITEM_Luvas = 10;
const EQUIPITEM_Legs = 11;
const EQUIPITEM_Pés = 12;
const EQUIPITEM_RFinger = 13;
const EQUIPITEM_LFinger = 14;
const EQUIPITEM_LBracelet = 15;
const EQUIPITEM_RBacelete = 16;
const EQUIPITEM_Deco1 = 17;
const EQUIPITEM_Deco2 = 18;
const EQUIPITEM_Deco3 = 19;
const EQUIPITEM_Deco4 = 20;
const EQUIPITEM_Deco5 = 21;
const EQUIPITEM_Deco6 = 22;
const EQUIPITEM_Cloak = 23;
const EQUIPITEM_Cintura = 24;
const EQUIPITEM_Max = 25;

const INVENTÁRIO_ITEM_TAB = 0;
const QUEST_ITEM_TAB = 1;

var WindowHandle m_hInventoryWnd;
var String m_WindowName;
var ItemWindowHandle m_invenItem;
var ItemWindowHandle m_questItem;
var ItemWindowHandle m_equipItem[ EQUIPITEM_Max ];
var ItemWindowHandle m_hHennaItemWindow;
var TextBoxHandle m_hAdenaTextBox;
//var TabHandle m_invenTab;
var ButtonHandle m_sortBtn;
var ButtonHandle m_BtnRotateLeft;
var ButtonHandle m_BtnRotateRight;

var TextureHandle m_CloakSlot_Disable;
var TextureHandle m_Talisman_Disable[ 6 ];


var CharacterViewportWindowHandle m_ObjectViewport;


var array<ItemID> m_itemOrder; // 인벤토리 아이템의 순서를 로컬에 저장한다.
var Vetor m_clickLocation; // 아이템 드롭할때 어디에 드롭할 지를 저장하고 있는다.

var Array<ItemInfo> m_EarItemListStart;
var Array<ItemInfo> m_EarItemList;
var Array<ItemInfo> m_FingerItemLIstStart;
var Array<ItemInfo> m_FingerItemLIst;
var Array<ItemInfo> m_DecoItemList;

var int m_invenCount;
var bool m_bCurrentState;
var int m_MaxInvenCount;
var int m_MaxQuestItemInvenCount;
var int m_MeshType;
var int m_NpcID;

var ButtonHandle m_hBtnCrystalize;

var WindowHandle ColorNickNameWnd;

//var int m_selectedItemTab;

//INVENORY EXPAND
var ButtonHandle m_BtnWindowExpand;
var ButtonHandle m_BtnAugAdd;
var ButtonHandle m_BtnAugDel;
var ButtonHandle btnInfo;
var TextureHandle m_QuestItembkgAdd2;
var TextureHandle m_QuestItembkgAdd;
//var TextureHandle m_tabbgLine;
var TextureHandle m_InventoryItembg_expand;
var int useExtendedInventory;
var int extraSlotsCount;
var int currentInvenCol;
var bool éVert;
var bool éIniciar;
var ItemInfo TaliInfo1, TaliInfo2, TaliInfo3, TaliInfo4, TaliInfo5, TaliInfo6;

var TaliWnd script_tali;
var ItemControlWnd script_item;

function OnRegisterEvent()
{
    RegisterEvent(EV_InventoryClear);
    RegisterEvent(EV_InventoryOpenWindow);
    RegisterEvent(EV_InventoryHideWindow);
    RegisterEvent(EV_InventoryAddItem);
    RegisterEvent(EV_InventoryUpdateItem);
    RegisterEvent(EV_InventoryItemListEnd);
    RegisterEvent(EV_InventoryAddHennaInfo);
    RegisterEvent(EV_InventoryToggleWindow);
    RegisterEvent(EV_UpdateHennaInfo);
    RegisterEvent(EV_UpdateUserInfo);
    RegisterEvent(EV_DialogOK);
    RegisterEvent(EV_Restart);
    RegisterEvent(EV_SetMaxCount);
    RegisterEvent(EV_ChangeCharacterPawn);
    RegisterEvent(EV_ChatMessage);
}

function OnLoad()
{
    if(CREATE_ON_DEMAND==0)
        OnRegisterEvent();
    
    m_WindowName="InventárioWnd";

    if(CREATE_ON_DEMAND==0)
        InitHandle();
    else
        InitHandleCOD();

    InitScrollBar();
    
    
    GetINIInt("Inventário", "extraSlots", extraSlotsCount, "PatchSettings");
    GetINIInt("Inventário", "useExtender", useExtendedInventory, "PatchSettings");
    currentInvenCol = extraSlotsCount + 6 + 1;
    if ( (CorInvenção atual < 6) && (ColInvenção atual > 13) )
    {
        ColInvenção atual = 6;
    }
    //m_questItem.SetCol(11);
    //m_questItem.ShowScrollBar(false);
// m_questItem.SetWindowSize(395, 34);
    //m_questItem.SetScrollBarPosition( 20, 5, -3 );
// m_questItem.SetScrollBarPosition( 21, -338, -101 );
    if ( useExtendedInventory == 1 )
    {
        resizeInventory(extraSlotsCount);
    }
    
    m_bCurrentState = false;
// m_selectedItemTab = INVENTORY_ITEM_TAB;
    
    script_tali = TaliWnd(GetScript("TaliWnd"));
    script_item = ItemControlWnd(GetScript("ItemControlWnd"));
    
    btnInfo.SetTooltipCustomType(MakeTooltipSimpleText("Excluir item - Ctrl+Alt+Click"));
    m_BtnAugAdd.SetTooltipCustomType(MakeTooltipSimpleText("Janela de Atributo"));
    m_BtnAugDel.SetTooltipCustomType(MakeTooltipSimpleText("Enchant Window"));
}

function InitHandle()
{
    m_hInventoryWnd=GetHandle(m_WindowName);
    m_invenItem = ItemWindowHandle(GetHandle(m_WindowName $ ".InventoryItem"));
    m_questItem = ItemWindowHandle(GetHandle(m_WindowName $ ".QuestItem"));
    m_hAdenaTextBox = TextBoxHandle( GetHandle(m_WindowName $ ".AdenaText") );
// m_invenTab = TabHandle(GetHandle(m_WindowName $ ".InventoryTab"));
    m_sortBtn = ButtonHandle(GetHandle(m_WindowName $ ".SortButton"));
    
    m_BtnRotateLeft= ButtonHandle(GetHandle(m_WindowName $ ".BtnRotateLeft"));
    m_BtnRotateRight= ButtonHandle(GetHandle(m_WindowName $ ".BtnRotateRight"));

    
    m_ObjectViewport = CharacterViewportWindowHandle(GetHandle("InventoryWnd.ObjectViewport"));
    
    m_equipItem[ EQUIPITEM_Underwear ] = ItemWindowHandle( GetHandle( "EquipItem_Underwear" ) );
    m_equipItem[ EQUIPITEM_Head ] = ItemWindowHandle( GetHandle( "EquipItem_Head" ) );
    m_equipItem[ EQUIPITEM_Hair ] = ItemWindowHandle( GetHandle( "EquipItem_Hair" ) );
    m_equipItem[ EQUIPITEM_Hair2 ] = ItemWindowHandle( GetHandle( "EquipItem_Hair2" ) );
    m_equipItem[ EQUIPITEM_Neck ] = ItemWindowHandle( GetHandle( "EquipItem_Neck" ) );
    m_equipItem[ EQUIPITEM_RHand ] = ItemWindowHandle( GetHandle( "EquipItem_RHand" ) );
    m_equipItem[ EQUIPITEM_Chest ] = ItemWindowHandle( GetHandle( "
    m_equipItem[ EQUIPITEM_LHand ] = ItemWindowHandle( GetHandle( "EquipItem_LHand" ) );
    m_equipItem[ EQUIPITEM_REar ] = ItemWindowHandle( GetHandle( "EquipItem_REar" ) );
    m_equipItem[ EQUIPITEM_LEar ] = ItemWindowHandle( GetHandle( "EquipItem_LEar" ) );
    m_equipItem[ EQUIPITEM_Gloves ] = ItemWindowHandle( GetHandle( "EquipItem_Gloves" ) );
    m_equipItem[ EQUIPITEM_Legs ] = ItemWindowHandle( GetHandle( "EquipItem_Legs" ) );
    m_equipItem[ EQUIPITEM_Feet ] = ItemWindowHandle( GetHandle( "EquipItem_Feet" ) );
    m_equipItem[ EQUIPITEM_RFinger ] = ItemWindowHandle( GetHandle( "EquipItem_RFinger" ) );
    m_equipItem[ EQUIPITEM_LFinger ] = ItemWindowHandle( GetHandle( "
    m_equipItem[ EQUIPITEM_LBracelet ] = ItemWindowHandle( GetHandle( "EquipItem_LBracelet" ) );
    m_equipItem[ EQUIPITEM_RBracelet ] = ItemWindowHandle( GetHandle( "EquipItem_RBracelet" ) );
    m_equipItem[ EQUIPITEM_Deco1 ] = ItemWindowHandle( GetHandle( "EquipItem_Talisman1" ) );
    m_equipItem[ EQUIPITEM_Deco2 ] = ItemWindowHandle( GetHandle( "EquipItem_Talisman2" ) );
    m_equipItem[ EQUIPITEM_Deco3 ] = ItemWindowHandle( GetHandle( "EquipItem_Talisman3" ) );
    m_equipItem[ EQUIPITEM_Deco4 ] = ItemWindowHandle( GetHandle( "EquipItem_Talisman4" ) );
    m_equipItem[ EQUIPITEM_Deco5 ] = ItemWindowHandle( GetHandle( "EquipItem_Talisman5" ) );

    m_equipItem[ EQUIPITEM_Cloak ] = ItemWindowHandle( GetHandle( "EquipItem_Cloak" ) );
    m_equipItem[ EQUIPITEM_Waist ] = ItemWindowHandle( GetHandle( "EquipItem_Waist" ) );
    
    m_equipItem[ EQUIPITEM_LHand ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Head ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Gloves ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Legs ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Feet ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Hair2 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );

    m_CloakSlot_Disable = TextureHandle(GetHandle(m_WindowName $ ".CloakSlot_Disable"));
    m_Talisman_Disable[ 0 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman1_Disable"));
    m_Talisman_Disable[ 1 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman2_Disable"));
    m_Talisman_Disable[ 2 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman3_Disable"));
    m_Talisman_Disable[ 3 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman4_Disable"));
    m_Talisman_Disable[ 4 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman5_Disable"));
    m_Talisman_Disable[ 5 ] = TextureHandle(GetHandle(m_WindowName $ ".Talisman6_Disable"));
                                                                                        
    m_hHennaItemWindow = ItemWindowHandle( GetHandle( "
    m_hBtnCrystallize = ButtonHandle(GetHandle(m_WindowName $ ".CrystallizeButton"));
    
    m_InventoryItembg_expand = TextureHandle(GetHandle("InventoryItembg_expand"));
// m_tabbg = TextureHandle(GetHandle("InventoryWnd.tabbkg"));
    m_QuestItembkgAdd2 = TextureHandle(GetHandle("InventárioWnd.QuestItembkgAdd2"));
    m_QuestItembkgAdd = TextureHandle(GetHandle("InventárioWnd.QuestItembkgAdd"));
    m_BtnWindowExpand = ButtonHandle(GetHandle(m_WindowName $ ".BtnWindowExpand"));
    m_BtnAugAdd = ButtonHandle(GetHandle(m_WindowName $ ".AddAug"));
    m_BtnAugDel = ButtonHandle(GetHandle(m_WindowName $ ".DelAug"));
    btnInfo = ButtonHandle(GetHandle(m_WindowName $ "
    
    ColorNickNameWnd = GetHandle("ColorNickNameWnd");
}

function InitHandleCOD()
{
    m_hInventoryWnd=GetWindowHandle(m_WindowName);
    m_invenItem = GetItemWindowHandle(m_WindowName $ ".InventoryItem");
    m_questItem = GetItemWindowHandle(m_WindowName $ ".QuestItem");
    m_hAdenaTextBox = GetTextBoxHandle( m_WindowName $ ".AdenaText" );
// m_invenTab = GetTabHandle(m_WindowName $ ".InventoryTab");
    m_sortBtn = GetButtonHandle(m_WindowName $ ".SortButton");
    
    m_BtnRotateLeft= GetButtonHandle(m_WindowName $ ".BtnRotateLeft");
    m_BtnRotateRight= GetButtonHandle(m_WindowName $ ".BtnRotateRight");

    
    m_ObjectViewport = GetCharacterViewportWindowHandle("InventoryWnd.ObjectViewport");
    

    m_equipItem[ EQUIPITEM_Underwear ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Underwear" );
    m_equipItem[ EQUIPITEM_Head ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Head" );
    m_equipItem[ EQUIPITEM_Hair ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Hair" );
    m_equipItem[ EQUIPITEM_Hair2 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Hair2" );
    m_equipItem[ EQUIPITEM_Neck ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Neck" );
    m_equipItem[ EQUIPITEM_RHand ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_RHand" );
    m_equipItem[ EQUIPITEM_Chest ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Chest" );

    m_equipItem[ EQUIPITEM_REar ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_REar" );
    m_equipItem[ EQUIPITEM_LEar ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_LEar" );
    m_equipItem[ EQUIPITEM_Gloves ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Gloves" );
    m_equipItem[ EQUIPITEM_Legs ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Legs" );
    m_equipItem[ EQUIPITEM_Feet ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Feet" );
    m_equipItem[ EQUIPITEM_RFinger ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_RFinger" );
    m_equipItem[ EQUIPITEM_LFinger ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_LFinger" );
    m_equipItem[ EQUIPITEM_LBracelet ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_LBracelet" );
    m_equipItem[ EQUIPITEM_RBracelet ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_RBracelet" );
    m_equipItem[ EQUIPITEM_Deco1 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman1" );
    m_equipItem[ EQUIPITEM_Deco2 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman2" );
    m_equipItem[ EQUIPITEM_Deco3 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman3" );
    m_equipItem[ EQUIPITEM_Deco4 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman4" );
    m_equipItem[ EQUIPITEM_Deco5 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman5" );
    m_equipItem[ EQUIPITEM_Deco6 ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Talisman6" );
    m_equipItem[ EQUIPITEM_Cloak ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Cloak" ); 
    m_equipItem[ EQUIPITEM_Waist ] = GetItemWindowHandle( m_WindowName $ ".EquipItem_Waist" );
    
    m_equipItem[ EQUIPITEM_LHand ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Head ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Gloves ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Legs ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_equipItem[ EQUIPITEM_Feet ].SetDisableTex( "L2UI.InventoryWnd.
    m_equipItem[ EQUIPITEM_Hair2 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_LBracelet ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_RBracelet ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_Deco1 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_Deco2 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_Deco3 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_Deco4 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    //~ m_equipItem[ EQUIPITEM_Deco5 ].SetDisableTex( "L2UI.InventoryWnd.
    //~ m_equipItem[ EQUIPITEM_Deco6 ].SetDisableTex( "L2UI.InventoryWnd.Icon_dualcap" );
    m_CloakSlot_Disable = GetTextureHandle(m_WindowName $ ".CloakSlot_Disable");
    m_Talisman_Disable[ 0 ] = GetTextureHandle(m_WindowName $ ".Talisman1_Disable");
    m_Talisman_Disable[ 1 ] = GetTextureHandle(m_WindowName $ ".Talisman2_Disable");
    m_Talisman_Disable[ 2 ] = GetTextureHandle(m_WindowName $ ".Talisman3_Disable");
    m_Talisman_Disable[ 3 ] = GetTextureHandle(m_WindowName $ ".Talisman4_Disable");
    m_Talisman_Disable[ 4 ] = GetTextureHandle(m_WindowName $ ".Talisman5_Disable");
    m_Talisman_Disable[ 5 ] = GetTextureHandle(m_WindowName $ ".Talisman6_Disable");
                                                                                
    m_hHennaItemWindow = GetItemWindowHandle( m_WindowName$.HennaItem" );
    m_hBtnCrystallize = GetButtonHandle(m_WindowName $ ".CrystallizeButton");
    
    m_InventoryItembg_expand = GetTextureHandle("InventoryWnd.InventoryItembg_expand");
// m_tabbg = GetTextureHandle("InventoryWnd.tabbkg");
    m_QuestItembkgAdd2 = GetTextureHandle("InventárioWnd.QuestItembkgAdd2");
    m_QuestItembkgAdd = GetTextureHandle("InventárioWnd.QuestItembkgAdd");
    m_BtnWindowExpand = GetButtonHandle(m_WindowName $ ".BtnWindowExpand");
    m_BtnAugAdd = GetButtonHandle(m_WindowName $ ".AddAug");
    m_BtnAugDel = GetButtonHandle(m_WindowName $ ".DelAug");

    ColorNickNameWnd = GetWindowHandle("ColorNickNameWnd");
}

function InitScrollBar()
{
    m_invenItem.SetScrollBarPosition( 0, 17, 0 );
    m_questItem.SetScrollBarPosition( 0, 3, -3 );
}

function OnEvent(int Event_ID, string param)
{
// debug("Invent Event ID :" $string(Event_ID)$" "$param);
    switch( Event_ID )
    {
    case EV_InventoryClear:
        HandleClear();
        pausa;
    case EV_InventoryOpenWindow:
        HandleOpenWindow(param);
        pausa;
    case EV_InventoryHideWindow:
        HandleHideWindow();
        pausa;
    case EV_InventoryAddItem:
        //~ debug ("adicionar item");
        HandleAddItem(param);
        pausa;
    case EV_InventoryUpdateItem:
        //~ debug ("update item" @ param);
        HandleUpdateItem(param);
        //FingerItemUpdate();
        pausa;
    case EV_InventoryItemListEnd:
        HandleItemListEnd();
        pausa;
    case EV_InventoryAddHennaInfo:
        HandleAddHennaInfo(param);
        pausa;
    case EV_UpdateHennaInfo:
        HandleUpdateHennaInfo(param);
        pausa;
    case EV_InventoryToggleWindow:
        HandleToggleWindow();
        pausa;
    case EV_DialogOK:
        HandleDialogOK();
        pausa;
    case EV_UpdateUserInfo:
        HandleUpdateUserInfo();
        pausa;
    case EV_Restart:
        HandleRestart();
        //~ SaveInventoryOrder();
        pausa;
    case EV_SetMaxCount:
        HandleSetMaxCount(param);
        //~ debug("Obteve Evento SetMaxCount" @ param);
        pausa;
    case EV_ChangeCharacterPawn:
        HandleChangeCharacterPawn(param);
        pausa;
    case EV_ChatMessage:
        HandleChatMessage( param );
        pausa;
    padrão:
        quebrar;
    };
}

function HandleChatMessage( String param )
{
    local int SysMsgIndex;

    ParseInt(param, "SysMsgIndex", SysMsgIndex);
        
        if ( SysMsgIndex == 34 )
        {
            isStart = false;
            m_hInventoryWnd.SetTimer(1130, 2000);
            script_tali.tal[0].Clear();
            script_tali.tal[1].Clear();
            script_tali.tal[2].Clear();
            script_tali.tal[3].Clear();
            
        }
}
    


function OnShow()
{
    CheckShowCrystalizeButton();
    SetAdenaText();
    SetItemCount();

    UpdateHennaInfo();
    if ( useExtendedInventory == 1 )
    {
        resizeInventory(extraSlotsCount);
    }
}

function SwitchExtendedInventory ()
{
    GetINIInt("Inventário", "extraSlots", extraSlotsCount, "PatchSettings");
  
    if ( currentInvenCol != 6 )
    {
        resizeInventory(-1);
        useExtendedInventory = 0;
    } else 
    {
        resizeInventory(extraSlotsCount);
        useExtendedInventory = 1;
    }
    SetINIInt("Inventário", "useExtender", useExtendedInventory, "PatchSettings");
    
}

function resizeInventory (int nSlotsCount)
{
  local int Width;
  local int Altura;
  local int tmp_Width;
  local int paraExpandWidth;

  m_InventoryItembg_expand.GetWindowSize(Largura,Altura);
  nSlotsCount = nSlotsCount + 1;
  currentInvenCol = 6 + nSlotsCount;
  if (nSlotsCount > 0)
  {
    tmp_Width = (nSlotsCount + 1) * 36 + 1;
    m_BtnWindowExpand.SetTexture("L2UI_edKith.frames_df_Btn_Minimize","L2UI_edKith.frames_df_btn_Minimize_down","L2UI_edKith.frames_df_btn_Minimize_over");
  } else {
    tmp_Width = 1; //deafault 1
    m_BtnWindowExpand.SetTexture("L2UI_edKith.frames_df_btn_Expand","L2UI_edKith.frames_df_btn_Expand_down","L2UI_edKith.frames_df_btn_Expand_over");
  }
  if ( Width != tmp_Width )
  {
    if ( nSlotsCount >


      toExpandWidth = 36 * nSlotsCount;
    } else {
      currentInvenCol = 6;
      paraExpandWidth = 0;
    }
    m_hInventoryWnd.SetWindowSize(446 + toExpandWidth,433);
    m_QuestItembkgAdd2.HideWindow();
    m_QuestItembkgAdd2.SetWindowSize(0, 35);
    m_invenItem.SetWindowSize(231 + toExpandWidth,288);
    m_QuestItembkgAdd.SetWindowSize(144, 35);
    
    m_questItem.SetWindowSize(415 + toExpandWidth, 34);
    m_InventoryItembg_expand.SetWindowSize(1 + toExpandWidth,288);
  // m_tabbg.SetWindowSize(242 + toExpandWidth,321);
    if (( nSlotsCount > 0 ) && ( nSlotsCount < 4 ))
    {
        m_QuestItembkgAdd2.HideWindow();
        m_QuestItembkgAdd.SetWindowSize(144 + toExpandWidth, 35);
    }
    if ( nSlotsCount > 3 )
    {
        m_QuestItembkgAdd.SetWindowSize(252, 35);        
        m_QuestItembkgAdd2.ShowWindow();
        if (nSlotsCount == 5)
            m_QuestItembkgAdd2.SetWindowSize(72, 35);
        if (nSlotsCount == 4)
            m_QuestItembkgAdd2.SetWindowSize(36, 35);            
    }
    m_invenItem.SetCol(currentInvenCol);
    m_questItem.SetCol(currentInvenCol+5);
// AddSystemMessageString(string(currentInvenCol));
// AddSystemMessageString(string(toExpandWidth));     
// AddSystemMessageString(string(nSlotsCount));
// m_questItem.SetScrollBarPosition( 20, 5, -3 );
// m_questItem.SetScrollBarPosition( 21, -338, -101 );
// RequestItemList();
  }
}


function CheckShowCrystallizeButton()
{
    if( class'UIDATA_PLAYER'.static.HasCrystallizeAbility() )
        m_hBtnCrystallize.ShowWindow();
    else
        m_hBtnCrystallize.HideWindow();
}


function OnHide()
{
    if( m_bCurrentState )
        SaveInventoryOrder();
}

//Verifica GamingState - Iniciar
função HandleRestart()
{
    m_bCurrentState = false;
}
function OnEnterState( nome a_PrevStateName )
{
    isStart = true;
    m_bCurrentState = true;
}
function OnExitState( nome a_NextStateName )
{
    m_bCurrentState = false;
}

// Função de evento
ItemWindow OnDBClickItemWithHandle( ItemWindowHandle a_hItemWindow, int index )
{
    debug("item db_click");
    UseItem( a_hItemWindow, index );
    
}

function OnRCicItemWithHandle( ItemWindowHandle a_hItemWindow, int index )
{
    debug("OnRCClickItem");
    UseItem( a_hItemWindow, index );
}

function OnSelectItemWithHandle( ItemWindowHandle a_hItemWindow, int a_Index )
{
    local int i;
    informações locais do ItemInfo;
    seqüência local ItemName;
    
    a_hItemWindow.GetSelectedItem( info );
    //printItemInfo(info);
    //TextLink
    if( IsKeyDown( IK_Shift ) )
    {
        a_hItemWindow.GetSelectedItem( info );
        ItemName = class'UIDATA_ITEM'.static.GetRefineryItemName( info.Name, info.RefineryOp1, info.RefineryOp2 );
        if (info.ItemNum > IntToInt64(1)) ItemName = ItemName @ "[" $ MakeCostString(Int64ToString(info.ItemNum)) $ "]";
        if (info.Enchanted > 0) ItemName = "+" $ info.Enchanted @ ItemName;
        SetItemTextLink( info.
// printItemInfo(info);
        //sysDebug(string(info.ID.ServerID)$" + "$ string(info.ID.ClassID));
        //sysDebug(string(class'UIDATA_PLAYER'.static.GetPlayerID()));
    }
    
    //DeleteItem
    if( IsKeyDown( IK_Alt ) && IsKeyDown( IK_Ctrl ) )
    {
        if (a_hItemWindow.GetSelectedItem( info ))
        {
            if (a_hItemWindow.FindItem(info.id) != -1)
            {
                if( class'UIDATA_PLAYER'. static.HasCrystallizeAbility() && class'UIDATA_ITEM'.static.IsCrystalzable(info.ID) )
                {    
                    RequestCrystallizeItem(info.ID,IntToInt64(1));

                }
                else
                {                    
                    RequestDestroyItem(info.ID, info.ItemNum);
                    PlayConsoleSound(IFST_TRASH_BASKET);
                }
            }
        }
    }
    
// if( a_hItemWindow == m_invenItem )
// { a_hItemWindow.GetSelectedItem( info ); printItemInfo(info);}
    
    
    if( a_hItemWindow == m_invenItem )
        return;

    if( a_hItemWindow == m_questItem )
        return;

    for( i = 0; i < EQUIPITEM_MAX; ++i )
    {
        if( a_hItemWindow != m_equipItem[ i ] )
            m_equipItem[ i ].ClearSelect();
    }
}

function OnDropItem( String strTarget, ItemInfo info, int x, int y )
{
    local int toIndex, fromIndex;

    // 인벤토리에서 온 것이 아니면 처리하지 않는다.
    debug("Inventário OnDropItem dest " $ strTarget $ ", fonte " $ info.DragSrcName $ " x:" $ x $ ", y:" $ y);
    if( !(info.DragSrcName == "InventoryItem" || info. DragSrcName == "QuestItem" || -1 != InStr( info.DragSrcName, "EquipItem" ) || info.DragSrcName == "PetInvenWnd") )
        Retorna;

    
    if( strTarget == "InventoryItem" )
    {
        if( info.DragSrcName == "InventoryItem" ) // Muda a posição do item
        {
            toIndex = m_invenItem.GetIndexAt( x, y, 1, 1 );
            
            // Troca com outro item
            if( toIndex >= 0 )
            {
                fromIndex = m_invenItem.FindItem(info.ID);
                if( toIndex != fromIndex )
                    m_invenItem.SwapItems( fromIndex, toIndex );
            }
        }
        else if( -1 != InStr( info.DragSrcName, "EquipItem" ) ) // Desequipa o item
        {
            RequestUnequipItem(info.ID, info.SlotBitType);

        else if( info.DragSrcName == "PetInvenWnd" ) // Pet -> Inventário
        {
            if( IsStackableItem(info.ConsumeType) && info.ItemNum > IntToInt64(1) ) // Item múltiplo?
            {
                if( info.AllItemCount > IntToInt64(0) ) // 전부 옮길 것인가
                {
                    if ( CheckItemLimit( info.ID, info.AllItemCount ) )
                    {
                        class'PetAPI'.static.RequestGetItemFromPet( info.ID, info.AllItemCount, false );
                    }
                }
                else
                {
                    DialogSetID(DIALOG_DROPITEM_PETASKCOUNT);
                    DialogSetReservedItemID(info.ID); // ServerID
                    DialogSetParamInt64(info.ItemNum);
                    DialogShow(DIALOG_Modalless, DIALOG_NumberPad, MakeFullSystemMsg( GetSystemMessage(72), info.Name ) );
                }
            }
            else // Item único?
            {
                class'PetAPI'.static.RequestGetItemFromPet( info.ID, IntToInt64(1), false);
            }
        }
    }
    else if( strTarget == "QuestItem" )
    {
        if( info.DragSrcName == "QuestItem" ) // Alterar a posição do item
        {
            toIndex = m_questItem.GetIndexAt( x, y, 1, 1 );
            if( toIndex >= 0 ) // Troca com outro item
            {
                fromIndex = m_questItem.FindItem(info.ID); // ServerID
                if( toIndex != fromIndex )
                {
                    // 두개의 while 문 중에 어차피 한개에만 들어간다.
                    while( fromIndex < toIndex ) // 앞으로 땡기기
                    {
                        m_questItem.SwapItems( fromIndex, fromIndex + 1 );
                        ++ do Índice;
                    }

                    while( toIndex < fromIndex ) // 뒤로 밀어내기
                    {
                        m_questItem.SwapItems( fromIndex, fromIndex - 1 );
                        --fromIndex;
                    }
                }
            }
            else // move este item para o último
            {
                return;
                //fromIndex = m_invenItem.GetItemNum();
                //while( toIndex < fromIndex - 1 )
                //{
            // m_invenItem.SwapItems( toIndex, toIndex + 1 );
            // ++toIndex;
            // };
            }
        }
    }
    else if( -1 != InStr( strTarget, "EquipItem" ) || strTarget == "ObjectViewportDispatchMsg" ) // Equipar o item
    {
        debug("Inven EquipItem: " $info.DragSrcName $" " $string(info. Tipo de item));
        if( info.DragSrcName == "PetInvenWnd" ) // Pet -> Equip
        {
            class'PetAPI'.static.RequestGetItemFromPet( info.ID, IntToInt64(1), true );
        }
        else if( -1 != InStr( info.DragSrcName, "EquipItem" ) ) //função da função. 
        {
        }
        else if( EItemType(info.ItemType) != ITEM_ETCITEM )
        {
            debug("RequestuseItem");
            RequestUseItem(info.ID);
        }
    }
    else if( strTarget == "TrashButton" ) // Destruir item(após confirmação)
    {
        if( IsStackableItem(info.ConsumeType) && info.ItemNum > IntToInt64(1) ) // Vários itens?
        {
            if( info.AllItemCount > IntToInt64(0) ) // Cobrança de dados
            {                
                DialogSetID(DIALOG_DESTROYITEM_ALL);
                DialogSetReservedItemID(info.ID); // ServerID
                DialogSetReservedInt2(info.AllItemCount);
                DialogShow(DIALOG_Modalless,DIALOG_Warning, MakeFullSystemMsg(GetSystemMessage(74), info.Name, ""));
            }
            senão
            {
                DialogSetID(DIALOG_DESTROYITEM_ASKCOUNT);
                DialogSetReservedItemID(info.ID); // ServerID
                DialogSetParamInt64(info.ItemNum);
                DialogShow(DIALOG_Modalless, DIALOG_NumberPad, MakeFullSystemMsg( GetSystemMessage(73), info.Name ) );
            }
        }
        else // Item único?
        {
            // 파쇄하려 할때, 결정화가 가능한 상황이면 그냥 결정화
            if( class'UIDATA_PLAYER'.static.HasCrystallizeAbility() && class'UIDATA_ITEM'.static.IsCrystallizable(info.ID) )             {static.IsCrystallizable(info.ID) )
            {
                static.IsCrystallizable(info.ID);
                DialogSetReservedItemID(info.ID);
                DialogShow(DIALOG_Modalless,DIALOG_Warning, MakeFullSystemMsg(GetSystemMessage(2232), info.Name ) );
            }
            else
            {
                DialogSetID(DIALOG_DESTROYITEM);
                DialogSetReservedItemID(info.ID); // ServerID
                DialogShow(DIALOG_Modalless, DIALOG_Warning, MakeFullSystemMsg( GetSystemMessage(74), info.Name ) );
            }
        }
    }
    else if( strTarget == "CrystallizeButton" )
    {
        if( info.DragSrcName == "InventoryItem" || ( -1 != InStr( info.DragSrcName, "EquipItem" ) ) )
        {
            if( class'UIDATA_PLAYER'.static.HasCrystallizeAbility() && class'UIDATA_ITEM'.static.IsCrystalzable(info.ID) ) // Mostra a caixa de diálogo pedindo confirmação
            {
                DialogSetID(DIALOG_CRYSTALLIZE);
                DialogSetReservedItemID(info.ID);
                DialogShow(DIALOG_Modalless,DIALOG_Warning, MakeFullSystemMsg(GetSystemMessage(336), info.Name ) );
            }
            else
            {
                DialogSetID(DIALOG_NOTCRYSTALLIZE);
                DialogShow(DIALOG_Modalless,DIALOG_Notice, MakeFullSystemMsg(GetSystemMessage(2171), info.Name ) );                
            }
        }
    }    
    //~ SaveInventoryOrder();
}

// 같은 아이템 창 에서 아이템 을 옮기는 은 은 은 은 에서 하도록 하고 여기서 는 바닥 바닥 에 버리는 상황 만 한다 한다.
function OnDropItemSource( String strTarget, ItemInfo info )
{
    if( strTarget == "Console" )
    {
        if( info.DragSrcName == "InventoryItem" || info.DragSrcName == "QuestItem"
            || ( -1 != InStr( info .DragSrcName, "EquipItem" ) ) )
        {
            m_clickLocation = GetClickLocation();
            if( IsStackableItem(info.ConsumeType) && info.ItemNum > IntToInt64(1) ) // Cobrança de dados de acesso
            {
                if( info.AllItemCount > IntToInt64(0) ) // Cobrança de dados
                {
                    DialogHide();
                    DialogSetID( DIALOG_DROPITEM_ALL );
                    DialogSetReservedItemID(info.ID); // ServerID
                    DialogSetReservedInt2(info.AllItemCount);
                    DialogShow(DIALOG_Modalless,DIALOG_Warning, MakeFullSystemMsg(GetSystemMessage(1833), info.Name, ""));
                }
                else // 숫자를 물어볼 것인가
                {
                    DialogHide();
                    DialogSetID( DIALOG_DROPITEM_ASKCOUNT );
                    DialogSetReservedItemID(info.ID); // ServerID
                    DialogSetParamInt64(info.ItemNum);
                    DialogShow(DIALOG_Modalless,DIALOG_NumberPad, MakeFullSystemMsg(GetSystemMessage(71), info.Name, ""));
                }
            }
            else
            {
                DialogHide();
                DialogSetID( DIALOG_DROPITEM );
                DialogSetReservedItemID(info.ID); // ServerID
                DialogShow(DIALOG_Modalless,DIALOG_Warning, MakeFullSystemMsg(GetSystemMessage(400), info.Name, ""));
            }
        }
    }
    //~ SaveInventoryOrder();
}

function bool IsEquipItem( out ItemInfo info )
{
    return info.bEquipped;
}

function bool IsQuestItem( out ItemInfo info )
{
    return EItemtype(info.ItemType) == ITEM_QUESTITEM;
}
 
function HandleClear()
{
    InvenClear();
    EquipItemClear();
    m_questItem.Clear();
    
    m_EarItemListStart.Length = 0;
    m_EarItemList.Length = 0;
    m_FingerItemLIst.Length = 0;
    m_FingerItemLIstStart.Length = 0;
    m_DecoItemList.Length = 0;
}

function int EquipItemGetItemNum()
{
    local int i;
    local int ItemNum;

    for( i = 0; i < EQUIPITEM_Max; ++i )
    {
        if(m_equipItem[ i ].IsEnableWindow()) // 세트아이템은 하나만 센다. 
        {
            ItemNum = ItemNum + m_equipItem[ i ].GetItemNum();
        }
    }

    retornar ItemNum;
}

function EquipItemClear()
{
    local int i;

    for( i = 0; i < EQUIPITEM_Max; ++i )
        m_equipItem[ i ].Clear();
}

function bool LocalizarEquipItem(ItemID sID)
{
    local int i;
    local int Índice;

    for( i = 0; i < EQUIPITEM_Max; ++i )
    {
        Índice = m_equipItem[ i ].FindItem( sID ); // ServerID
        if( -1 != Index )
            return true;
    }

    retorna falso;
}

function EquipItemDelete( ItemID sID )
{
    local int i;
    local int Índice;
    local ItemInfo TheItemInfo;

    for( i = 0; i < EQUIPITEM_Max; ++i )
    {
        Índice = m_equipItem[ i ].FindItem( sID ); // ServerID
        if( -1 != Index )
        {
            m_equipItem[ i ].Clear();

            // 화살을 버리는 경우, 빈자리에 활 모양이 표시되어야한다.
            if( i == EQUIPITEM_LHand )
            {
                if( m_equipItem[ EQUIPITEM_RHand ].GetItem( 0, TheItemInfo ) )
                {
                    if( TheItemInfo.SlotBitType == 16384 )
                    {
                        m_equipItem[ EQUIPITEM_LHand ].Clear();
                        m_equipItem[ EQUIPITEM_LHand ].AddItem( TheItemInfo );
                        m_equipItem[ EQUIPITEM_LHand ].DisableWindow();
                    }
                    
                }
            }
            
            if ( i >= EQUIPITEM_Deco1 && i <= EQUIPITEM_Deco6) //TaliWnd
                script_tali.tal[i - 17].Clear();
            senão if (i == EQUIPITEM_REar)
                script_item.item3.Clear();
            senão if ( i == EQUIPITEM_Neck )
                script_item.item2.Clear();
            else if ( ( i == EQUIPITEM_Neck ) )
                script_item.item4.Clear();
            senão if ( i == EQUIPITEM_Neck )
                script_item.item1.Clear();
            else if ( i == EQUIPITEM_Neck )
            {
                script_item.item5.Clear();
                script_item.tex5.SetTexture("");
                isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
                if (!isVert) script_item.Me.SetWindowSize( 145 , 34 );
                else script_item.Me.SetWindowSize( 34 , 145 );
            }
        }
    }
}

function EarItemUpdate()
{
    local int i;
    local int LEarIndex, REarIndex;

    LEarIndex = -1;
    ÍndiceRear = -1;

    for( i = 0; i < m_EarItemList.Length; ++i )
    {
        switch( IsLOrREar( m_EarItemList[i].ID ) )
        {
        case -1:
            LEarIndex = i;
            pausa;
        caso 0:
            m_EarItemList.Remove( i, 1 );
            pausa;
        caso 1:
            REarIndex = i;
            pausa;
        }
    }

    if( -1 != LEarIndex )
    {
        //~ debug("왼쪽 귀걸이");
        m_equipItem[ EQUIPITEM_LEar ].Clear();
        m_equipItem[ EQUIPITEM_LEar ].AddItem( m_EarItemList[ LEarIndex ] );
    }

    if( -1 != REarIndex )
    {
        //~ debug("오른쪽 귀걸이");
        m_equipItem[ EQUIPITEM_REar ].Clear();
        m_equipItem[ EQUIPITEM_REar ].AddItem( m_EarItemList[ REarIndex ] );
        script_item.item3.Clear();
        script_item.item3.AddItem(m_EarItemList[ REarIndex ]);

    }
}

function EarItemUpdateStart()
{
    local int i;
    local int LEarIndex, REarIndex;

    LEarIndex = -1;
    ÍndiceRear = -1;

    for( i = 0; i < m_EarItemListStart.Length; ++i )
    {
        switch( IsLOrREar( m_EarItemListStart[i].ID ) )
        {
        case -1:
            
            LEarIndex = i;
            pausa;
        caso 0:
            m_EarItemList.Remove( i, 1 );
            pausa;
        caso 1:
            REarIndex = i;
            pausa;
        }
    }

    if( -1 != LEarIndex )
    {
        m_equipItem[ EQUIPITEM_LEar ].Clear();
        m_equipItem[ EQUIPITEM_LEar ].AddItem( m_EarItemListStart[ LEarIndex ] );
    }

    if( -1 != REarIndex )
    {
        m_equipItem[ EQUIPITEM_REar ].Clear();
        m_equipItem[ EQUIPITEM_REar ].AddItem( m_EarItemListStart[ REarIndex ] );
        
        script_item.item3.Clear();
        script_item.item3.AddItem(m_EarItemListStart[ REarIndex ]);
    }
}

//~ Função RBraceletItemUpdate()
//~ {
    //~ local int i;
    //~ if (g_RBraceTurnOn)
    //~ {
        //~ m_equipItem[ EQUIPITEM_Deco1 ].EnableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco2 ].EnableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco3 ].EnableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco4 ].EnableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco5 ].EnableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco6 ].EnableWindow();
    //~ }
    //~ else
    //~ {
        //~ m_equipItem[ EQUIPITEM_Deco1 ].DisableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco2 ].DisableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco3 ].DisableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco4 ].DisableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco5 ].DisableWindow();
        //~ m_equipItem[ EQUIPITEM_Deco6 ].DisableWindow();
    //~ }
//~ }

function FingerItemUpdate()
{
    local int i;
    local int LFingerIndex, RFingerIndex;

    LFingerIndex = -1;
    RFingerIndex = -1;
// AddSystemMessageString(string(m_FingerItemList.Length) $ " FingerItemUpdate ");
// AddSystemMessageString(string(m_FingerItemListStart.Length) $ " FingerItemUpdate Start");
    for( i = 0; i < m_FingerItemList.Length; ++i )
    {
        switch( IsLOrRFinger( m_FingerItemList[i].ID ) )
        {
        case -1:
            
            LFingerIndex = i;
// AddSystemMessageString((m_FingerItemList[i].Name) $ " case -1 " $ string(LFingerIndex));
            pausa;
        case 0:
// AddSystemMessageString((m_FingerItemList[i].Name) $" case 0 remove ");
            m_FingerItemList.Remove( i,
            pausa;
        caso 1:
            RFingerIndex = i;
// AddSystemMessageString((m_FingerItemList[i].Name) $ " case 1 " $ string(RFingerIndex));
            pausa;
        }
    }

    if( -1 != LFingerIndex )
    {
        m_equipItem[ EQUIPITEM_LFinger ].Clear();
        m_equipItem[ EQUIPITEM_LFinger ].AddItem( m_FingerItemList[ LFingerIndex ] );
    }

    if( -1 != RFingerIndex )
    {
        m_equipItem[ EQUIPITEM_RFinger ].Clear();
        m_equipItem[ EQUIPITEM_RFinger ].AddItem( m_FingerItemList[ RFingerIndex ] );
        
        script_item.item2.Clear();
        script_item.item2.AddItem(m_FingerItemList[ RFingerIndex ]);
    }
}


function FingerItemUpdateStart()
{
    local int i;
    local int LFingerIndex, RFingerIndex;

    LFingerIndex = -1;
    RFingerIndex = -1;
// AddSystemMessageString(string(m_FingerItemList.Length) $ " FingerItemUpdateStart ");
// AddSystemMessageString(string(m_FingerItemListStart.Length) $ " FingerItemUpdateStart Start");
    for( i = 0; i < m_FingerItemListStart.Length; ++i )
    {
        switch( IsLOrRFinger( m_FingerItemListStart[i].ID ) )
        {
        case -1:
            
            LFingerIndex = i;
    // AddSystemMessageString((m_FingerItemListStart[i].Name) $ " case -1 " $ string(LFingerIndex));
            pausa;
        case 0:
    // AddSystemMessageString((m_FingerItemListStart[i].Name) $" case 0 remove ");
            m_FingerItemList.Remove( i, 1 );
            pausa;
        caso 1:
            RFingerIndex = i;
    // AddSystemMessageString((m_FingerItemListStart[i].Name) $ " case 1 " $ string(RFingerIndex));
            pausa;
        }
    }

    if( -1 != LFingerIndex )
    {
        m_equipItem[ EQUIPITEM_LFinger ].Clear();
        m_equipItem[ EQUIPITEM_LFinger ].AddItem( m_FingerItemListStart[ LFingerIndex ] );
    }

    if( -1 != RFingerIndex )
    {
        m_equipItem[ EQUIPITEM_RFinger ].Clear();
        m_equipItem[ EQUIPITEM_RFinger ].AddItem( m_FingerItemListStart[ RFingerIndex ] );
        
        script_item.item2.Clear();
        script_item.item2.AddItem(m_FingerItemListStart[ RFingerIndex ]);
    }
}

//~ function DecoItemUpdate()
//~ {
    //~ local int i;
    //~ local int LFingerIndex, RFingerIndex;

    //~ LFingerIndex = -1;
    //~ RFingerIndex = -1;

    //~ for( i = 0; i < m_DecoItemList.Length; ++i )
    //~ {
        //~ switch( IsLOrRFinger( m_FingerItemList[i].ID ) )
        //~ {
        //~ case -1:
            / /~ LFingerIndex = i;
            //~ pausa;
        //~ case 0:
            //~ m_FingerItemList.Remove( i, 1 );
            //~ pausa;
        //~ case 1:
            //~ RFingerIndex = i;
            //~ pausa;
        //~ }
    //~ }

    //~ if( -1 != LFingerIndex )
    //~ {
        //~ m_equipItem[ EQUIPITEM_LFinger ].Clear();
        //~ m_equipItem[ EQUIPITEM_LFinger ].AddItem( m_FingerItemList[ LFingerIndex ] );
    //~}

    //~ if( -1 != RFingerIndex )
    //~ {
        //~ m_equipItem[ EQUIPITEM_RFinger ].Clear();
        //~ m_equipItem[ EQUIPITEM_RFinger ].AddItem( m_FingerItemList[ RFingerIndex ] );
    //~ }
//~ }


function EquipItemUpdate( ItemInfo a_info )
{
    local ItemWindowHandle hItemWnd;
    local ItemInfo TheItemInfo;
    local bool ClearLHand;
    local ItemInfo RHand;
    local ItemInfo LHand;
    Pernas ItemInfo local;
    local ItemInfo luvas;
    Pés de ItemInfo locais;
    local ItemInfo Hair2;
    local SkillInfo TalismanSkill;
    local int;
    //~ local int j;
    local int decoIndex;
    //~ Debug ("현재 장착 슬롯 타입:" @ a_Info.SlotBitType);
    //~ Debug ("망토 착탈" @ a_Info.SlotBitType );
    
    //~ UpdateTalismanSlotActivation();
    //~ UpdateCloakSlotActivation();
    
    //~ if (!m_equipItem[ EQUIPITEM_Cloak ].IsEnableWindow())
    //~ if( m_equipItem[ EQUIPITEM_Cloak ].GetItem( 0, TheItemInfo ) )
    //~ {
        //~ Debug("Equip Item Cloak Check");
        //~ UpdateCloakSlotActivation();
    //~ }
    
    //éTalismã = false;
    SetEnchantTex(a_Info);
    switch( a_Info.SlotBitType )
    {
    case 1: // SBT_UNDERWEAR
        hItemWnd = m_equipItem[ EQUIPITEM_Underwear ];
        pausa;
    case 2: // SBT_REAR
    case 4: // SBT_LEAR
    case 6: // SBT_RLEAR
        for( i = 0; i < m_EarItemList.Length; ++i )
        {
            if( IsSameServerID(m_EarItemList[ i ].ID, a_Info.ID) )
            {
                m_EarItemList[ i ] = a_Info;
                pausa;
            }
        }

        //
        m_EarItemList.Length )
        {
            m_EarItemList.Length = m_EarItemList.Length + 1;
            m_EarItemList[m_EarItemList.Length-1] = a_Info;
            if (m_EarItemListStart.Length<2) 
            {
                m_EarItemListStart.Length = m_EarItemListStart.Length + 1;
                m_EarItemListStart[m_EarItemListStart.Length-1] = a_Info;
            }
        }
        hItemWnd = Nenhum;

        if (!isStart) EarItemUpdate();
        
        if (isStart) EarItemUpdateStart();
    
        pausa;
    case 8: // SBT_NECK
        hItemWnd = m_equipItem[ EQUIPITEM_Neck ];
        pausa;
    case 16: // SBT_RFINGER
    case 32: // SBT_LFINGER
    case 48: // SBT_RLFINGER
    
// AddSystemMessageString(string(m_FingerItemList.Length) $ " ItemUpdate ");
// AddSystemMessageString(string(m_FingerItemListStart.Length) $ " ItemUpdate Start");
        
        for( i = 0; i < m_FingerItemList.Length; ++i )
        {
            if( IsSameServerID(m_FingerItemList[ i ].ID, a_Info.ID) )
            {
                m_FingerItemList[ i ] = a_Info;
    // AddSystemMessageString((m_FingerItemList[i].Name) );
                pausa;
            }
        }

        // Como usar a função
        if( i == m_FingerItemList.Length )
        {
            m_FingerItemList.Length = m_FingerItemList.Length + 1;
            m_FingerItemList[m_FingerItemList.Length-1] = a_Info;
            if (m_FingerItemListStart.Length<2) 
            {
                m_FingerItemListStart.Length = m_FingerItemListStart.Length + 1;
                m_FingerItemListStart[m_FingerItemListStart.Length-1] = a_Info;
            }
        }

        hItemWnd = Nenhum;
        
        if (!isStart) FingerItemUpdate();
        
        if (isStart) FingerItemUpdateStart();

        pausa;
    case 64: // SBT_HEAD
        hItemWnd = m_equipItem[ EQUIPITEM_Head ];
        hItemWnd.EnableWindow();
        //~ UpdateCloakSlotActivation();
        pausa;
    case 128: // SBT_RHAND
        hItemWnd = m_equipItem[ EQUIPITEM_RHand ];
        pausa;
    case 256: // SBT_LHAND
        hItemWnd = m_equipItem[ EQUIPITEM_LHand ];
        hItemWnd.EnableWindow();
        pausa;
    case 512: // SBT_GLOVES
        hItemWnd = m_equipItem[ EQUIPITEM_Gloves ];
        hItemWnd.EnableWindow();
        // Atualiza a ativação do slot de manto quando o slot de manto não está equipado. Aplicado apenas aos slots de luvas, peito, pernas e pés.
        //~ if (!m_equipItem[ EQUIPITEM_Cloak ].IsEnableWindow())
        //~ {
            //~ UpdateCloakSlotActivation();
        //~ }
    
        break;
    case 1024: // SBT_CHEST
        hItemWnd = m_equipItem[ EQUIPITEM_Chest ];
        // Atualiza a ativação do slot de manto quando o slot de manto não está equipado. Aplicado apenas aos slots de luvas, peito, pernas e pés.
        //~ if (!m_equipItem[ EQUIPITEM_Cloak ].IsEnableWindow())
        //~ {
            //~ UpdateCloakSlotActivation();
        //~ }
    
        break;
    case 2048: // SBT_LEGS
        hItemWnd = m_equipItem[ EQUIPITEM_Legs ];
        hItemWnd.EnableWindow();
        // Atualiza a ativação do slot de manto quando o slot de manto não está equipado. Aplicado apenas aos slots de luvas, peito, pernas e pés.
        //~ if (!m_equipItem[ EQUIPITEM_Cloak ].IsEnableWindow())
        //~ {
            //~ UpdateCloakSlotActivation();
        //~ }
    
        break;
    case 4096: // SBT_FEET
        hItemWnd = m_equipItem[ EQUIPITEM_Feet ];
        hItemWnd.EnableWindow();
        // Atualiza a ativação do slot de manto quando o slot de manto não está equipado. Aplicado apenas aos slots de luvas, peito, pernas e pés.
        //~ if( m_equipItem[ EQUIPITEM_Cloak ].GetItem( 0, TheItemInfo ) )
        
        //~ {
        //~ if (!m_equipItem[ EQUIPITEM_Cloak ].IsEnableWindow())
        //~ {
            //~ Debug("Equip Item Cloak Check");
            //~ UpdateCloakSlotActivation();
        //~ }
        //~ else
        //~ {
            //~ Debug("Equip Item Cloak None");
        //~ }
    
        break;
    case 8192: // SBT_BACK
        
        hItemWnd = m_equipItem[ EQUIPITEM_Cloak ];
        //~ Debug ("망토 착탈");
        hItemWnd.EnableWindow();
        pausa;
    
    case 16384: // SBT_RLHAND
        hItemWnd = m_equipItem[ EQUIPITEM_RHand ];
        ClearLH e = true;

    //~ debug("보우건의 번호?"@ a_Info.WeaponType);
    
        // rhand 에 arco 가, lhand 에 화살 이 있는 경우 화살 을 그대로 보여 준다 - Neverdie
        if (isboworfishingrod (a_info))
        {
            if (m_equipItem [Equipitem_lhand] .getItem (0, theiteminfo))
            {
                se )
                    ClearLHand = false;
            }
        }
        
        // 보우건을 착용했을때 위와 같은 방법으로 볼트를 보여준다. 
        if( IsBowOrFishingRod( a_Info ) )
        {
            if( m_equipItem[ EQUIPITEM_LHand ].GetItem( 0, TheItemInfo ) )
            {
                if( IsArrow( TheItemInfo ) )
                    ClearLHand = false;
            }
        }
        
        
        
        if( ClearLHand ) //LRHAND 경우에도 ex1 , ex2 가 있는게 있고 없는게 있어서 따로 처리가 필요합니다. ;; -innowind
        {
            if(Len(a_Info.IconNameEx1) !=0)
            {
                RHand = a_info;
                LHand = a_info;                
                RHand.IconIndex = 1;
                LHand.IconIndex = 2;
                //RHand.IconName = a_Info.IconNameEx1;
                //LHand.IconName = a_Info.IconNameEx2;
                m_equipItem[ EQUIPITEM_RHand ].Clear();
                m_equipItem[ EQUIPITEM_RHand ].AddItem(RHand);
                //m_equipItem[ EQUIPITEM_RHand ].DisableWindow();
                m_equipItem[ EQUIPITEM_LHand ].Clear();
                m_equipItem[ EQUIPITEM_LHand ].AddItem( LHand );
                m_equipItem[ EQUIPITEM_LHand ].DisableWindow();
                script_item.item4.Clear();
                script_item.item4.AddItem(a_Info);
                script_item.item5.Clear();
                isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
                if (!isVert) script_item.Me.SetWindowSize( 145 , 34 );
                else script_item.Me.SetWindowSize( 34 , 145 );
                script_item.tex5.SetTexture("");
                hItemWnd = Nenhum; // 아이콘 이미지가 보이지 않도록 기본 설정을 없애준다.
            }
            else // 활이나 창같이 아이콘이미지랑 똑같은 경우.
            {
                m_equipItem[ EQUIPITEM_LHand ].Clear();
                m_equipItem[ EQUIPITEM_LHand ].AddItem( a_Info );
                m_equipItem[ EQUIPITEM_LHand ].DisableWindow();                
            }
            
        }
        quebrar;
    case 32768: // SBT_ONEPIECE
        hItemWnd = m_equipItem[ EQUIPITEM_Chest ];
        Pernas = a_Info;
        Legs.IconName = a_Info.IconNameEX2; //하의 아이콘을 그려준다. 
        m_equipItem[ EQUIPITEM_Legs ].Clear();        
        m_equipItem[ EQUIPITEM_Legs ].AddItem( Legs );
        m_equipItem[ EQUIPITEM_Legs ].DisableWindow();    
        pausa;
    case 65536: // SBT_HAIR
        hItemWnd = m_equipItem[ EQUIPITEM_Hair ];
        pausa;
    case 131072: // SBT_ALLDRESS
        hItemWnd = m_equipItem[ EQUIPITEM_Chest ];
        Cabelo2 = a_info; //원래는 head가 따로있어야 하지만 메모리 절약차원에서 hair2에 넣습니다. -
        Luvas innowind = a_info;
        Pernas = a_info;
        Pés = a_info;
        Hair2.IconName = a_Info.IconNameEx1;
        Gloves.IconName = a_Info.IconNameEx2;
        Legs.IconName = a_Info.IconNameEx3;
        Feet.IconName = a_Info.IconNameEx4;
        m_equipItem[ EQUIPITEM_Head ].Clear();
        m_equipItem[ EQUIPITEM_Head ].AddItem( Hair2 );
        m_equipItem[ EQUIPITEM_Head ].DisableWindow();
        m_equipItem[ EQUIPITEM_Gloves ].Clear();
        m_equipItem[ EQUIPITEM_Gloves ].AddItem( Luvas );
        m_equipItem[ EQUIPITEM_Gloves ].DisableWindow();
        m_equipItem[ EQUIPITEM_Legs ].Clear();
        m_equipItem[ EQUIPITEM_Legs ].AddItem( Legs );
        m_equipItem[ EQUIPITEM_Legs ].DisableWindow();
        m_equipItem[ EQUIPITEM_Feet ].Clear();
        m_equipItem[ EQUIPITEM_Feet ].AddItem( Pés );
        m_equipItem[ EQUIPITEM_Feet ].DisableWindow();
        pausa;
    case 262144: // SBT_HAIR2
        hItemWnd = m_equipItem[ EQUIPITEM_Hair2 ];
        hItemWnd.EnableWindow();
        pausa;
    case 524288: // SBT_HAIRALL
        hItemWnd = m_equipItem[ EQUIPITEM_Hair ];
        //Cabelo2 = a_info;
        //Hair2.IconName = a_Info.IconNameEx2;
        m_equipItem[ EQUIPITEM_Hair2 ].Clear();
        m_equipItem[ EQUIPITEM_Hair2 ].AddItem( a_info );
        m_equipItem[ EQUIPITEM_Hair2 ].DisableWindow();
        pausa;
    case 1048576: //SBT_RBracelet
        hItemWnd = m_equipItem[ EQUIPITEM_RBracelet ];
        m_equipItem[ EQUIPITEM_RBracelet ].Clear();
        m_equipItem[ EQUIPITEM_RBacelet ].AddItem( a_info );
        m_equipItem[ EQUIPITEM_RBacelet ].EnableWindow();
        
        //~ g_RBraceTurnOn = true;
        //~ RBraceletItemUpdate();
        
    

        pausa;

    case 2097152: //SBT_LBracelet
        hItemWnd = m_equipItem[ EQUIPITEM_LBracelet ];
        m_equipItem[ EQUIPITEM_LBracelet ].Clear();
        m_equipItem[ EQUIPITEM_LBracelet ].AddItem( a_info );
        m_equipItem[ EQUIPITEM_LBraclet ].EnableWindow();
        
        // Atualiza a ativação do slot do Talisman Item quando o slot do Bracelet não está equipado. 
        //~ if (!m_equipItem[ EQUIPITEM_Deco1 ].IsEnableWindow())
        //~ {
        //~ UpdateTalismanSlotActivation();
        //~ }
            
        break;

    case 4194304: //SBT_Deco1;
    
        //~ debug ("아이템 번호" @ a_info.ItemType );
// UpdateTalismanSlotActivation();
    // AddSystemMessageString(a_info.Description);
    // AddSystemMessageString(string(a_info.RelatedQuestId[0]));
    // AddSystemMessageString(string(a_info.Id.ClassID));
// // AddSystemMessageString(string(a_info.Id.ServerID));
    // AddSystemMessageString(string(GetDecoIndex(a_info.Id)));
        decoIndex = GetDecoIndex(a_info.Id);
// ParseInt( param, "RelatedQuestCnt", tmpInt);
// if(tmpInt>0)
// {
// for(i=0; i<tmpInt; ++i)
// ParseInt(param, "RelatedQuestID"$i, info.RelatedQuestID[i]);
// }

    // if ((isStart) && (a_Info))
    // {    
    //    
    // if ((decoIndex == -1) && (isStart))
    // {

    // }
    // AddSystemMessageString(string(isStart));
    
        if (decoIndex == -1)
        {
        // AddSystemMessageString("start");
            for ( i = 0; i < 6; ++i )
            {
                if (script_tali.tal[i].GetItem(0, TheItemInfo))
                {    
                // AddSystemMessageString("yacheika" @ i @ "polna");
                    if (a_info.Id.ServerID == TheItemInfo.Id.ServerID)
                    {
                // AddSystemMessageString("yacheika" @ i @ "polna e taliki sovpadaut");
                        Retorna;
// m_equipItem[ EQUIPITEM_Deco1 + i ].Clear();
// m_equipItem[ EQUIPITEM_Deco1 + i ].AddItem( a_info );
// m_equipItem[ EQUIPITEM_Deco1 + i ].EnableWindow();
    
                    //TaliWnd
//
// if (GetTalismanSkillID(a_info.ID.ClassID) != -1)
// a_info.ID.ClassID = GetTalismanSkillID(a_info.ID.ClassID);
// GetSkillInfo( a_info.ID.ClassID, 1, TalismanSkill );
// a_info.IconName = TalismanSkill.TexName;
// a_info.ItemSubType = int(EShortCutItemType.SCIT_SKILL);
//
// script_tali.tal[i].Clear();
// script_tali.tal[i].AddItem(a_info);
                    }
                }
                else
                {
            // AddSystemMessageString("yacheika" @ i @ "pusta");
                    if (i == 0) TaliInfo1 = a_info;
                    if (i == 1) TaliInfo2 = a_info;
                    if (i == 2) TaliInfo3 = a_info;
                    if (i == 3) TaliInfo4 = a_info;
                    if (i == 4) TaliInfo5 = a_info;
                    if (i == 5) TaliInfo6 = a_info;
                    m_equipItem[ EQUIPITEM_Deco1 + i ].Clear();
                    m_equipItem[ EQUIPITEM_Deco1 + i ].AddItem( a_info );
                    m_equipItem[ EQUIPITEM_Deco1 + i ].EnableWindow();
    
                    //TaliWnd

                    if (GetTalismanSkillID(a_info.ID.ClassID) != -1)
                        a_info.ID.ClassID = GetTalismanSkillID(a_info.ID.ClassID);
// if ((a_info.ID.ClassID==23754) || a_info.ID.ClassID==23755))
// if (a_info.Enchanted >3) GetSkillInfo( a_info.ID.ClassID, a_info.Enchanted -3 , Talismã Skill);
                    GetSkillInfo( a_info.ID.ClassID, 1, TalismanSkill );
                    a_info.IconName = TalismãHabilidade.TexName;
                    a_info.ItemSubType = int(EShortCutItemType.SCIT_SKILL);
            // for(i = 0 ; i<MAX_RELATED_QUEST ; i++)
            // {        
            // a_info.RelatedQuestID[i] = 0;
            // }
                
                    script_tali.tal[i].Clear();
                    script_tali.tal[i].AddItem(a_info); 
                    Retorna;
                }
                
            }
        }
    
    
        
    // }
        if (decoIndex != -1)
        {
        // AddSystemMessageString("norm rejim");
            m_equipItem[ EQUIPITEM_Deco1 + decoIndex ].Clear();
            m_equipItem[ EQUIPITEM_Deco1 + decoIndex ].AddItem( a_info );
            m_equipItem[ EQUIPITEM_Deco1 + decoIndex ].EnableWindow();

            //TaliWnd

            if (GetTalismanSkillID(a_info.ID.ClassID) != -1)
                a_info.ID.ClassID = GetTalismanSkillID(a_info.ID.ClassID);
            GetSkillInfo( a_info.ID.ClassID, 1, TalismanSkill );
            a_info.IconName = TalismãHabilidade.TexName;
            a_info.ItemSubType = int(EShortCutItemType.SCIT_SKILL);

            script_tali.tal[decoIndex].Clear();
            script_tali.tal[decoIndex].AddItem(a_info);
            for (i = 0; i < 6; i++)
            {
                if (!m_equipItem[EQUIPITEM_Deco1+i].GetItem(0,TheItemInfo))                    
                script_tali.tal[i].Clear();
            }
            //TaliWnd    
        }
// UpdateTalismanSlotActivation();
        pausa;
    case 268435456:
        hItemWnd = m_equipItem[ EQUIPITEM_Waist ];
        pausa;    
    }

    if( Nenhum != hItemWnd )
    {
        hItemWnd.Clear();
        //~ Debug("IconName="@a_Info.IconName);
        hItemWnd.AddItem( a_Info );
        //AddSystemMessageString("a_Info.Name = "$a_Info.Name);
            

        if ( a_Info.SlotBitType == 8 ) //Colar
        {
            script_item.item1.Clear();
            script_item.item1.AddItem(a_Info);
        }
        
        
        if ( (a_Info.SlotBitType == 128) || (a_Info.SlotBitType == 16384)) // RLH e wxcept Duals
        {
            script_item.item4.Clear();
            script_item.item4.AddItem(a_Info);
            
            if( IsBowOrFishingRod( a_Info ) )
            {
                if( m_equipItem[ EQUIPITEM_LHand ].GetItem( 0, TheItemInfo ) )
                {
                    if( !IsArrow( TheItemInfo ) )
                    {    
                        script_item.item5.Clear();
                        isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
                        if (!isVert) script_item.Me.SetWindowSize( 145 , 34 );
                        else script_item.Me.SetWindowSize( 34 , 145 );
                        script_item.tex5.SetTexture("");
                    }
                }
            }
            else
            {    
                if (a_Info.SlotBitType == 16384)
                {    
                    script_item.item5.Clear();
                    isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
                    if (!isVert) script_item.Me.SetWindowSize( 145 , 34 );
                    else script_item.Me.SetWindowSize( 34 , 145 );
                    script_item.tex5.SetTexture("");
                }
            }
        }
    
        
    // if (a_Info.SlotBitType == 268435456) // Cinto
    // {
// script_item.item3.Clear();
// script_item.item3.AddItem(a_Info);
    // }
        
        if ( (a_Info.SlotBitType == 256) ) // LHand
        {
            script_item.item5.Clear();
            isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
            if (!isVert) script_item.Me.SetWindowSize( 182 , 34 );
            else script_item.Me.SetWindowSize( 34 , 182 );
            script_item.tex5.SetTexture("L2UI_CH3.etc.menu_outline");
            script_item.item5.AddItem(a_Info);
        }
        
    }
    
    //~ UpdateTalismanSlotActivation();
    //~ UpdateCloakSlotActivation();
}

function HandleOpenWindow(string param)
{
    local int open;
    ParseInt(param, "Abrir", abrir);

    if(abrir==0)
        return;
    
    AbrirJanela();
}

function OpenWindow()
{
    m_hInventoryWnd.ShowWindow();
    m_hInventoryWnd.SetFocus();
}

function HandleHideWindow()
{
    HideWindow(m_WindowName);
}

function HandleAddItem(string param)
{
    //local int Order;
    informações locais do ItemInfo;
    
    ParamToItemInfo( param, info );
    //Debug ("HandleAddItem");
    if( IsEquipItem(info) )        
        EquipItemUpdate( info );
    else if( IsQuestItem(info) )
    {
        m_questItem.AddItem( info );
    }
    else
    {
        //ParseInt( param, "Ordem", Ordem);
        //debug("InvenOrder: "$string(Order));
        //InvenAddItem( info, Order );
        InvenAddItem( info );
    }
}

function HandleUpdateItem(string param)
{
// local int Order;
    tipo de string local;
    informações locais do ItemInfo;
    índice int local;
    
// debug("Inventário UpdateItem : " $ param);
    ParseString(param, "tipo", tipo);
    ParamToItemInfo( param, info );
    
// debug("bEQUIPED:"@INFO.bEquipped);
    SetEnchantTex(info);
    
    if( type == "adicionar" )
    {
        if( IsEquipItem(info) )
        {
            EquipItemUpdate( info );
        }
        else if( IsQuestItem(info) )
        {
            m_questItem.AddItem(info);
            índice = m_questItem.GetItemNum() - 1;
            while( index > 0 ) // 제일 앞으로!
            {
                m_questItem.SwapItems(index-1, index);
                --índice;
            }
        }
        else
        {
            //ParseInt( param, "Ordem", Ordem );
            //InvenAddItem( info, Order );
            InvenAddItem( info );
        }
    }
    else if( type == "update" )
    {
// debug("업데이트? " $ param);
        if( IsEquipItem(info) )
        {
// debug("이즈이큅아이템?? " $ param);
            
            if( EquipItemFind(info.ID) ) // correspondência encontrada
            {
            
// debug("이프로 ? " $ param);
                EquipItemUpdate( info );
            }
            else // não encontrado em equipItemList. Nesse caso, mova o item de InvenItemList para EquipItemList
            {
// debug("아이템 착용 프로세스1 인벤토리에서 지운다.");
// debug("엘스로?? " $ param);
                InvenDelete( info );
// debug("아이템 착용 프로세스2");
                EquipItemUpdate( info );
            }
        }
        else if( IsQuestItem(info) )
        {
            index = m_questItem.FindItem(info.ID); // ServerID
            if( index != -1 )
            {
                m_questItem.SetItem(índice, info);
            }
            else // Neste caso, o item Equipado está sendo desequipado.
            {
                EquipItemDelete(info.ID);
                m_questItem.AddItem(info);
            }
        }
        else
        {
            índice = m_invenItem.FindItem(info.ID); // ServerID
            if( index != -1 )
            {
                m_invenItem.SetItem( index, info );
            }
            else // Neste caso, o item Equipado está sendo desequipado.
            {
                EquipItemDelete(info.ID);
                //InvenAddItem( info, 0 );
                InvenAddItem( info );
            }
        }
    }
    else if( type == "delete" )
    {
        if( IsEquipItem(info) )
        {
            EquipItemDelete(info.ID);
        }
        else if( IsQuestItem(info) )
        {
            index = m_questItem.FindItem(info.ID); // ServerID
            m_questItem.DeleteItem(index);
        }
        else
        {
            InvenDelete( info );
        }
    }

    UpdateItemUsabilidade();

    SetAdenaText();
    SetItemCount();
}

function HandleItemListEnd()
{
    SetAdenaText();
    SetItemCount();
    UpdateItemUsabilidade();
}

function UpdateItemUsability()
{
    m_invenItem.SetItemUsability();
    m_questItem.SetItemUsability();
}

function HandleAddHennaInfo(string param)
{
    /*
    local int hennaID, isActive;

    ParseInt( param, "ID", hennaID );
    ParseInt( param, "bActive", isActive );
    */
    UpdateHennaInfo();
}

function HandleUpdateHennaInfo(string param)
{
    UpdateHennaInfo();
}

function UpdateHennaInfo()
{
    local int i;
    local int HennaInfoCount;
    local int HennaID;
    local int IsActive;
    local ItemInfo HennaItemInfo;
    local UserInfo PlayerInfo;
    local int ClassStep;

    if( GetPlayerInfo( PlayerInfo ) )
    {
        ClassStep = GetClassStep( PlayerInfo.nSubClass );
        switch( ClassStep )
        {
        case 1:
        case 2:
        case 3:
            m_hHennaItemWindow.SetRow( ClassStep );
            pausa;
        padrão:
            m_hHennaItemWindow.SetRow( 0 );
            pausa;
        }
    }

    m_hHennaItemWindow.Clear();

    HennaInfoCount = class'HennaAPI'.static.GetHennaInfoCount();
    if(HennaInfoCount > ClassStep)
        HennaInfoCount = ClassStep;

    for( i = 0; i < HennaInfoCount; ++i )
    {
        if( class'HennaAPI'.static.GetHennaInfo( i, HennaID, IsActive ) )
        {
            if( !class'UIDATA_HENNA'.static.GetItemName( HennaID, HennaItemInfo. Nome ) )
                pausa;
            if( !class'UIDATA_HENNA'.static.GetDescription( HennaID, HennaItemInfo.Description ) )
                break;
            if( !class'UIDATA_HENNA'.static.GetIconTex( HennaID, HennaItemInfo.IconName ) )
                break;

            if( 0 == IsActive )
                HennaItemInfo.bDisabled = true;
            senão
                HennaItemInfo.bDisabled = false;

            m_hHennaItemWindow.AddItem(HennaItemInfo);            
        }
    }
}

function SetAdenaText()
{
    local string adenaString;
    
    adenaString = MakeCostString( Int64ToString(GetAdena()) );

    m_hAdenaTextBox.SetText(adenaString);
    m_hAdenaTextBox.SetTooltipString( ConvertNumToText(Int64ToString(GetAdena())) );
    //debug("SetAdenaText " $ adenaString );
}

function UseItem(ItemWindowHandle a_hItemWindow, int index )
{
    local ItemInfo info;
    local ItemInfo item1i,item2i,item3i,item4i,item5i;

    if( a_hItemWindow.GetItem(index, info) )
    {
        if( !info.bDisabled ) // lpislhy
        {
            if( info.bRecipe ) // 제조법(레시피)를 사용할 것인지 물어본다
            {
                DialogSetReservedItemID(info.ID); // ServerID
                DialogSetID(DIALOG_USE_RECIPE);
                DialogShow(DIALOG_Modalless,DIALOG_Warning, GetSystemMessage(798));
            }
            else if( info.PopMsgNum > 0 ) // 팝업 메시지를 보여준다.
            {
                DialogSetID(DIALOG_POPUP);
                DialogSetReservedItemID(info.ID); // ServerID
                DialogShow(DIALOG_Modalless,DIALOG_Warning, GetSystemMessage(info.PopMsgNum));
            }
            else
            {
                debug ("Enviando solicitação ao servidor:");
                RequestUseItem(info.ID);

                script_item.item1.GetItem(0, item1i);
                script_item.item2.GetItem(0, item2i);
                script_item.item3.GetItem(0, item3i);
                script_item.item4.GetItem(0, item4i);
                script_item.item5.GetItem(0, item5i);
                //AddSystemMessageString("GOT ITEM INFO");
                switch (info.ID)
                {
                    case item1i.ID:
                    script_item.item1.Clear();
                    //script_tali.tal4.DisableWindow();
                    //AddSystemMessageString("4th ITEM INFO clear");
                    pausa;
                    caso item2i.ID:
                    script_item.item2.Clear();
                    //script_tali.tal4.DisableWindow();
                    //AddSystemMessageString("4th ITEM INFO clear");
                    pausa;
                    case item3i.ID:
                    script_item.item3.Clear();
                    //script_tali.tal4.DisableWindow();
                    //AddSystemMessageString("4th ITEM INFO clear");
                    pausa;
                    case item4i.ID:
                    script_item.item4.Clear();
                    //script_tali.tal4.DisableWindow();
                    //AddSystemMessageString("4th ITEM INFO clear");
                    pausa;
                    case item5i.ID:
                    script_item.item5.Clear();
                    isVert = GetOptionBool( "Jogo", "IsShortcutWndVertical" );
                    if (!isVert) script_item.Me.SetWindowSize( 145 , 34 );
                    else script_item.Me.SetWindowSize( 34 , 145 );
                    script_item.tex5.SetTexture("");
                    //script_tali.tal4.DisableWindow();
                    //AddSystemMessageString("4th ITEM INFO clear");
                    pausa;
                }
            }
        }
    }
}

function int GetMyInventoryLimit()
{
    //~ depurar ("MyInventoryLimit:" @ class'UIDATA_PLAYER'.static.GetInventoryLimit());
    //~ return class'UIDATA_PLAYER'.static.GetInventoryLimit();
    return m_MaxInvenCount;
}

function int GetQuestItemInventoryLimit()
{
    return m_MaxQuestItemInvenCount;
}

function SetItemCount()
{
    limite int local;
    contagem int local;
    identificador TextBoxHandle local;

// if(m_selectedItemTab == INVENTORY_ITEM_TAB)
// {
        contagem = m_invenCount + EquipItemGetItemNum();
        limite = GetMyInventoryLimit();
// }
// else if(m_selectedItemTab == QUEST_ITEM_TAB)
// {
// contagem = m_questItem.GetItemNum();
// limite = GetQuestItemInventoryLimit();
// }

    //conta = m_invenCount + m_questItem.GetItemNum() + EquipItemGetItemNum();
    //conta = m_invenCount + EquipItemGetItemNum() + m_questItem.GetItemNum();
    //conta = m_invenCount + m_questItem.GetItemNum() + EquipItemGetItemNum();

    if(CREATE_ON_DEMAND==0)
        handle = TextBoxHandle(GetHandle(m_WindowName $ ".ItemCount"));
    else
        handle = GetTextBoxHandle(m_WindowName $ ".ItemCount");

    handle.SetText("(" $ contagem $ "/" $ limite $ ")");
    debug("SetItemCount : count " $ count $ ", limit : " $ limit );
}

function HandleDialogOK()
{
    local int id;
    local INT64 reservado2;
    sID do ItemID local;
    número INT64 local;
    
    if( DialogIsMine() )
    {
        id = DialogGetID();
        reservado2 = DialogGetReservedInt2();
        numero = StringToInt64(DialogGetString());
        sID = DialogGetReservedItemID(); // ItemID
        
        if( id == DIALOG_USE_RECIPE || id == DIALOG_POPUP )
        {
            RequestUseItem(sID);
        }
        else if( id == DIALOG_DROPITEM )
        {
            RequestDropItem( sID, IntToInt64(1), m_clickLocation );
        }
        else if( id == DIALOG_DROPITEM_ASKCOUNT )
        {
            if(número == IntToInt64(0)) 
                número = IntToInt64(1); // 아무 숫자도 입력하지 않으면 1개 드랍으로 처리
            RequestDropItem( sID, number, m_clickLocation );
        }
        else if( id == DIALOG_DROPITEM_ALL )
        {
            RequestDropItem( sID, reservado2, m_clickLocation );
        }
        else if( id == DIALOG_DESTROYITEM )
        {
            RequestDestroyItem(sID, IntToInt64(1));
            PlayConsoleSound(IFST_TRASH_BASKET);
        }
        else if( id == DIALOG_DESTROYITEM_ASKCOUNT )
        {
            RequestDestroyItem(sID, número);
            PlayConsoleSound(IFST_TRASH_BASKET);
        }
        else if( id == DIALOG_DESTROYITEM_ALL)
        {
            RequestDestroyItem(sID, reservado2);
            PlayConsoleSound(IFST_TRASH_BASKET);
        }
        else if( id == DIALOG_CRYSTALLIZE )
        {
            RequestCrystallizeItem(sID,IntToInt64(1));
            PlayConsoleSound(IFST_TRASH_BASKET);
        }
        else if ( id == DIALOG_DROPITEM_PETASKCOUNT )
        {
            class'PetAPI'.static.RequestGetItemFromPet( sID, número, false);
        }
    }
}

function HandleUpdateUserInfo()
{
    if( m_hInventoryWnd.IsShowWindow() )
    {
        InvenLimitUpdate();
        EarItemUpdate();
        FingerItemUpdate();
        CheckShowCrystalizeButton();
        UpdateTalismanSlotActivation();
        UpdateCloakSlotActivation();
    }
    else
    {
        EarItemUpdate();
        FingerItemUpdate();
// UpdateTalismanSlotActivation();
    }
}

function HandleToggleWindow()
{
    if( m_hInventoryWnd.IsShowWindow())
    {
        m_hInventoryWnd.HideWindow();
        PlayConsoleSound(IFST_INVENWND_CLOSE);
    }
    else
    {
        if( IsShowInventoryWndUponEvent() )
        {
            RequestItemList();
            m_hInventoryWnd.ShowWindow();
            PlayConsoleSound(IFST_INVENWND_OPEN);
        }
    }
}

// 개인 창고, 혈맹, 화물창고, 교환창, 상점, 구매, 판매창, 개인, 개인 구매 창이 떠있을 경우 경우 무시 하는
// 다른 사람 개인 개인 상점 창 에서 내 가 구매 때 는 열려야함 사람 의 개인 상점 창 에서 내 가 구매 할 는 열려야함 열려야함 -;; -
função innowind bool IsShowInventoryWndUponEvent()
{
    local WindowHandle m_warehouseWnd;
    local WindowHandle m_privateShopWnd;
    local WindowHandle m_tradeWnd;
    local WindowHandle m_shopWnd;
    local WindowHandle m_multiSellWnd;
    local WindowHandle m_deliverWnd;
    local PrivateShopWnd m_scriptPrivateShopWnd;
    local WindowHandle m_PostBoxWnd, m_PostWriteWnd, m_PostDetailWnd_General, m_PostDetailWnd_SafetyTrade; 
    //ramificação
    local WindowHandle m_BR_CashShopWnd;
    local WindowHandle m_BR_BuyingWnd;
    //fim do ramo

    //função de comando
    local WindowHandle m_ProductInventoryWnd;

    if(CREATE_ON_DEMAND==0)
    {
        m_warehouseWnd = GetHandle( "WarehouseWnd" ); //개인창고, 혈맹창고, 화물창고
        m_privateShopWnd = GetHandle( "PrivateShopWnd" ); //개인판매, 개인구매
        m_tradeWnd = GetHandle( "TradeWnd" ); //교환
        m_shopWnd = GetHandle( "ShopWnd" ); //상점구매, 판매
        m_multiSellWnd = GetHandle( "MultiSellWnd" ); //상점구매, 판매
        m_deliverWnd = GetHandle( "DeliverWnd" ); //화물서비스
        m_scriptPrivateShopWnd = PrivateShopWnd( GetScript("PrivateShopWnd") );

        m_PostBoxWnd = GetHandle( "PostBoxWnd" );
        m_PostWriteWnd = GetHandle("PostWriteWnd");
        m_PostDetailWnd_General = GetHandle( "PostDetailWnd_General" );
        m_PostDetailWnd_SafetyTrade = GetHandle( "PostDetailWnd_SafetyTrade" );
        
        //filial
        m_BR_CashShopWnd = GetHandle( "BR_CashShopWnd" ); // 유료 상점
        m_BR_BuyingWnd = GetHandle( "BR_BuyingWnd" ); // 유료 상점
        // fim da ramificação

        m_ProductInventoryWnd = GetHandle("ProductInventoryWnd"); // 판매대행
    }
    else
    {
        m_warehouseWnd = GetWindowHandle( "WarehouseWnd" ); //개인창고, 혈맹창고, 화물창고
        m_privateShopWnd = GetWindowHandle( "PrivateShopWnd" ); //개인판매, 개인구매
        m_tradeWnd = GetWindowHandle( "TradeWnd" ); //교환
        m_shopWnd = GetWindowHandle( "ShopWnd" ); //상점구매, 판매
        m_multiSellWnd = GetWindowHandle( "MultiSellWnd" ); //상점구매, 판매
        m_deliverWnd = GetWindowHandle( "DeliverWnd" );

        m_PostBoxWnd = GetWindowHandle( "PostBoxWnd" );
        m_PostWriteWnd = GetWindowHandle( "PostWriteWnd" );
        m_PostDetailWnd_General = GetWindowHandle( "PostDetailWnd_General" );
        m_PostDetailWnd_SafetyTrade = GetWindowHandle( "PostDetailWnd_SafetyTrade" );
        
        //filial
        m_BR_CashShopWnd = GetWindowHandle( "BR_CashShopWnd" ); // 유료 상점
        m_BR_BuyingWnd = GetWindowHandle( "BR_BuyingWnd" ); // 유료 상점
        // fim da ramificação

        m_ProductInventoryWnd = GetWindowHandle( "ProductInventoryWnd" ); // 판매대행
    }

    if( m_warehouseWnd.IsShowWindow() )
        return false;

    if( m_warehouseWnd.IsShowWindow() )
        return false;

    if( m_tradeWnd.IsShowWindow() )
        return false;
    
    if( m_shopWnd.IsShowWindow() )
        return false;
    
    if( m_multiSellWnd.IsShowWindow() )
        return false;
    
    if( m_deliverWnd.IsShowWindow() )
        return false;
    
    if( m_privateShopWnd.IsShowWindow() && m_scriptPrivateShopWnd.m_type == PT_Sell )
        return false;

    if (m_PostBoxWnd.IsShowWindow() || m_PostWriteWnd.IsShowWindow() || m_PostDetailWnd_General.IsShowWindow() || m_PostDetailWnd_SafetyTrade.IsShowWindow() )
        return false;
        
    //branch
    if( m_BR_CashShopWnd.IsShowWindow() || m_BR_BuyingWnd.IsShowWindow() )
        return false;
    //fim do ramo

    if( m_ProductInventoryWnd.IsShowWindow() )
        return false;

    retorne verdadeiro;
}

function int IsLOrREar( ItemID sID )
{
    local ItemID LEar;
    local ItemID REar;
    local ItemID LFinger;
    local ItemID RFinger;

    GetAccessoryItemID( LEar, REar, LFinger, RFinger );

    if( IsSameServerID(sID, LEar) )
        return -1;
    senão if( IsSameServerID(sID, REar) )
        return 1;
    senão
        retorna 0;
}

function int IsLOrRFinger( ItemID sID )
{
    local ItemID LEar;
    local ItemID REar;
    local ItemID LFinger;
    local ItemID RFinger;

    GetAccessoryItemID( LEar, REar, LFinger, RFinger );

    if( IsSameServerID(sID, LFinger) )
        return -1;
    else if( IsSameServerID(sID, RFinger) )
        return 1;
    senão
        retorna 0;
}

function bool IsBowOrFishingRod( ItemInfo a_Info )
{
    //~ debug("보우건의 번호?"@ a_Info.WeaponType);
    
    if( 6 == a_Info.WeaponType || 10 == a_Info.WeaponType || 12 == a_Info.WeaponType )
        return true;

    retorna falso;
}

function int IsDecoItem( ItemInfo a_Info )
{
    return a_Info.SlotBitType;
}

function bool IsArrow( ItemInfo a_Info )
{
    return a_Info.bArrow;
}

//Invent Item Order, ttmayrin
function InvenLimitUpdate()
{
    local int Count;
    local int CurLimit;
    local int Limite de Invenção;
    local int Contagem Adicionada;
    local int DeletedCount;
    
    local ItemInfo ClearItem;
    local ItemInfo CurItem;

    usuário local UserInfo;

    // Default Item
    // 아이템 착용후 슬롯 리셋 
    ClearItem.IconName = "L2ui_ct1.emptyBtn";
    
    if( GetPlayerInfo( usuário ) )
    {
        
        ClearItemID( ClearItem.ID );        
        InvenLimit = user.nInvenLimit;
        CurLimit = m_invenItem.GetItemNum();
// AddSystemMessageString("User InvenLimit : "$string(InvenLimit)$"InvenItem: "$string(CurLimit));
        if( CurLimit < InvenLimit )
        {
            Contagem Adicionada = InvenLimit - CurLimit;
            for( Count=0; Count<AddedCount; Count++ )
                m_invenItem.AddItem( ClearItem );
        }
        else if (CurLimit > InvenLimit)
        {
            DeletedCount = CurLimit - InvenLimit;
            for ( Contagem = m_InvenItem.GetItemNum()- 1; Contagem >= 0; Contagem-- )
            {
                if (DeletedCount > 0)
                {
                    m_InvenItem.GetItem(Contagem, CurItem );
                    if (!IsValidItemID(CurItem.ID))
                    {
                        m_invenItem.DeleteItem(Count);
                        DeletedCount--;
                    }
                    if (DeletedCount <= 0)
                    {
                        break;
                    }                    
                }
            }
        }
    }
}

//função InvenAddItem( ItemInfo newItem, int order )
function InvenAddItem( ItemInfo newItem )
{
    local int idx;
    local int CurLimit;
    local int FindIdx;
    
    local ItemInfo curItem;
    
    FindIdx = -1;
    
    if( m_invenItem.GetItem( newItem.Order, curItem ) )
    {
        if( !IsValidItemID( curItem.ID ) )
        {
            // FindIdx = Order;
            FindIdx = newItem.Order;
        }
    }
    
    if( FindIdx < 0 )
    {
        CurLimit = m_invenItem.GetItemNum();
        for( idx=0; idx<CurLimit; idx++ )
        {
            if( m_invenItem.GetItem( idx, curItem ) )
            {
                
                if( !IsValidItemID(curItem.ID))
                {
                    FindIdx = idx;
                    pausa;
                }
            }
        }
    }
// if (newItem.Enchanted >0) newItem.ForeTexture = "icon.pvp_tab";
    //if ((newItem.Enchanted >0) && (newItem.SlotBitType >0)) newItem.ForeTexture = "pug.enchant"$ String(newItem.Enchanted);
    SetEnchantTex(novoItem);
    if( FindIdx > -1 )
    {
        
        m_invenItem.SetItem( FindIdx, newItem );
    }
    else
    {
        m_invenItem.AddItem( newItem );
    }
        
    m_invenCount++;
}

function InvenDelete( ItemInfo item )
{
    local int FindIdx;
    local ItemInfo ClearItem;
    
    ClearItemID(ClearItem.ID);
    
    //Coleção de dados de acesso
    ClearItem.IconName = "L2ui_ct1.emptyBtn";
    FindIdx = m_invenItem.FindItem( item.ID );
    if( FindIdx != -1 )
    {
        m_invenItem.SetItem( FindIdx, ClearItem );
        m_invenCount--;
    }
}

function InvenClear()
{
    m_invenItem.Clear();
    InvenLimitUpdate();
    m_invenCount = 0;
}

function SaveInventoryOrder()
{
    local int idx;
    local int Limite de Invenção;
    item ItemInfo local;
    array local<ItemID> IDList;
    array local<int> OrderList;

    InvenLimit = m_invenItem.GetItemNum();

    debug("inven_limit" $ InvenLimit);

    for( idx=0; idx<InvenLimit; idx++ )
    {
        if( m_invenItem.GetItem( idx, item ) )
        {
            if( IsValidItemID( item.ID ) )
            {
                IDList.Insert(IDList.Length, 1);
                IDList[IDList.Length-1] = item.ID;
                
                OrderList.Insert(OrderList.Length, 1);
                OrderList[OrderList.Length-1] = item.Order;
            }
        }
    }

    debug("idlist_length" $ IDList.Length);
    debug("orderlist_length" $ OrderList.Length);
    
    if( IDList.Length > 0 )
    {
        debug("Salvando Inventário");
        RequestSaveInventoryOrder( IDList, OrderList );
    }
    SetINIInt("Inventário", "extraSlots", extraSlotsCount, "PatchSettings");
    //SetINIInt("Inventory", "useExtender", useExtendedInventory, "PatchSettings");
}

function OnClickButton( string strID )
{    

    switch( strID )
    {
        case "AddAug":
        
            if (class'UIAPI_WINDOW'.static.IsShowWindow("AutoAtt"))
            {
                class'UIAPI_WINDOW'.static.HideWindow("AutoAtt");
            }
            else
            {
                class'UIAPI_WINDOW'.static.ShowWindow("AutoAtt");
                class'UIAPI_WINDOW'.static.SetFocus("AutoAtt");
            }
    // script_ref = RefineryWnd(GetScript("RefineryWnd"));
    // if (script_ref.m_RefineryWnd_Main.isShowWindow()) script_ref.m_RefineryWnd_Main.HideWindow();
        // if(m_invenTab.

    // else// 어짜피 디스에이블 할꺼지만 보험차원에서..
    // script_ref.ShowRefineryInterface();
        // }
        quebrar;
        case "DelAug":
            if (class'UIAPI_WINDOW'.static.IsShowWindow("AutoItemEnchant"))
            {
                class'UIAPI_WINDOW'.static.HideWindow("AutoItemEnchant");
            }
            else
            {
                class'UIAPI_WINDOW'.static.ShowWindow("AutoItemEnchant");
                class'UIAPI_WINDOW'.static.SetFocus("AutoItemEnchant");
            }
// script_unref = UnrefineryWnd(GetScript("UnrefineryWnd"));
    // if (script_unref.m_UnRefineryWnd_Main.isShowWindow()) script_unref.m_UnRefineryWnd_Main.HideWindow();
        // if (m_inventab.gettopindex () == 0) // 인벤토리 아이템 텝 이 활성 화 되어 있을 때 만
        // {// 어짜피 디스 에이블 할꺼지만 보험 차원 에서 ..
// else
    // executevent (ev_showrefineryCancelInteface);
        // }
        quebrar;
        case "sortbutton":
        // if (m_inventab.gettopindex () == 0) // 인벤토리 아이템 텝 이 활성 화 되어 있을 때 만
        // {// 어짜피 디스 에이블 할꺼지만 보험 차원 에서 ..
                sortItem (m_invenitem); //função de comando
                SaveInventoryOrder();
        // }
        quebrar;
    // case "InventoryTab0": // 인벤토리 아이템 텝 클릭
    // m_sortBtn.EnableWindow();
    // m_selectedItemTab = INVENTORY_ITEM_TAB;
    // SetItemCount();
    // pausa;
    // case "InventoryTab1": // 퀘스트 아이템 텝 클릭
    // m_sortBtn.DisableWindow();
    // m_selectedItemTab = QUEST_ITEM_TAB;
    // SetItemCount();
    // pausa;
        case "BtnWindowExpand":
            SwitchExtendedInventory();
            SetItemCount();
            RequestItemList();
            SortItem(m_invenItem); //função de comando
            SaveInventoryOrder();
            pausa;
        //~ case "BtnZoomReset":
            //~ debug ("ResetScale");
            //~ m_ObjectViewport.SetCharacterScale(0.4f);
            //~ pausa;
        
    }
}

function OnLButtonDown (WindowHandle a_WindowHandle, int X, int Y)
{
    //~ depuração ("ClickedDown");
    
    if (a_WindowHandle == m_BtnRotateLeft)
    {
        //~ debug ("ClickedDown Button Left");
        //~ class'UIAPI_CharacterViewportWindow'.static.StartRotation( "InventoryWnd.ObjectViewport", "false");
        m_ObjectViewport.StartRotation(false);
    }
    else if (a_WindowHandle == m_BtnRotateRight)
    {
        //~ debug ("ClickedDown Button Right");
        //~ class'UIAPI_CharacterViewportWindow'.static.StartRotation( "InventoryWnd.ObjectViewport", "true");
        m_ObjectViewport.StartRotation(true);

    //~ else if (a_WindowHandle == m_BtnZoomIn)
    //~ {
        //~ m_ObjectViewport.StartZoom(false);
    //~ }
    //~ else if (a_WindowHandle == m_BtnZoomOut)
    //~ {
        //~ m_ObjectViewport.StartZoom(true);
    //~ }
}

function OnLButtonUp (WindowHandle a_WindowHandle, int X, int Y)
{
    //~ debug ("ClickedUp");
    if (a_WindowHandle == m_BtnRotateLeft)
    {
        //~ class'UIAPI_CharacterViewportWindow'.static.EndRotation( "InventoryWnd.ObjectViewport");
        m_ObjectViewport.EndRotation();
    }
    else if (a_WindowHandle == m_BtnRotateRight)
    {
        //~ class'UIAPI_CharacterVisewportWindow'.static.EndRotation( "InventoryWnd.ObjectViewport");
        m_ObjectViewport.EndRotation();
    }
    //~ else if (a_WindowHandle == m_BtnZoomIn)
    //~ {
        //~ m_ObjectViewport.EndZoom();
    //~}
    //~ else if (a_WindowHandle == m_BtnZoomOut)
    //~ {
        //~ m_ObjectViewport.EndZoom();
    //~ }
}


//#ifdef CT26P3
function SortItem( ItemWindowHandle ItemWnd)
{
    local int i, j;
    local int invenLimit;
    item ItemInfo local;
    local EItemType eItemType;


    local int numAtivo;
    local int numArma;
    local int numArmor;
    local int numAccessary;
    local int numEtcItem;

    local int numAncientCrystalEnchantAm;
    local int numAncientCrystalEnchantWp;
    local int numCrystalEnchantAm;
    local int numCrystalEnchantWp;

    local int numBlessEnchantAm;
    local int numBlessEnchantWp;
    local int numEnchantAm;
    local int numEnchantWp;

    local int numIncEnchantPropAm;
    local int numIncEnchantPropWp;

    local int numPotion;
    local int numElixir;

    local int numSeta;
    local int numBolt;

    local int numReceita;

    local int próximoSlot;

    local int testInt;


    local Array<ItemInfo> AssetList;
    local Array<ItemInfo> Lista de Armas;
    local Array<ItemInfo> ArmorList;
    local Array<ItemInfo> AccesaryList;
    local Array<ItemInfo> EtcItemList;

    // etc item 구분
    local Array<ItemInfo> AncientCrystalEnchantAmList;
    local Array<ItemInfo> AncientCrystalEnchantWpList;
    local Array<ItemInfo> CrystalEnchantAmList;
    local Array<ItemInfo> CrystalEnchantWpList;

    local Array<ItemInfo> BlessEnchantAmList;
    local Array<ItemInfo> BlessEnchantWpList;

    local Array<ItemInfo> EnchantAmList;
    //local Array<ItemInfo> EnchantAttrList;
    local Array<ItemInfo> EnchantWpList;

    local Array<ItemInfo> IncEnchantPropAmList;
    local Array<ItemInfo> IncEnchantPropWpList;

    local Array<ItemInfo> PotionList;
    local Array<ItemInfo> ElixirList;

    local Array<ItemInfo> ArrowList;
    local Array<ItemInfo> BoltList;

    local Array<ItemInfo> RecipeList;

    // 무게 순 정렬을 위한 변수
    local ItemInfo temp;

    debug("Classificando o item inventado");

    numAtivo = 0;
    numArma = 0;
    numArmadura = 0;
    numAcessório = 0;
    numPoção = 0;
    numEtcItem = 0;

    numAncientCrystalEnchantAm = 0;
    numAncientCrystalEnchantWp = 0;
    numCrystalEnchantAm = 0;
    numCrystalEnchantWp = 0;
    numBlessEnchantAm = 0;
    numBlessEnchantWp = 0;
    numIncEnchantPropAm = 0;
    numIncEnchantPropWp = 0;
    numEnchantAm = 0;
    numEnchantWp = 0;
    numPoção = 0;
    numElixir = 0;
    numSeta = 0;
    numBolt = 0;
    numReceita = 0;

    próximoSlot = 0;

    invenLimit = m_invenItem.GetItemNum();

    // 1. 아이템들을 종류별로 구분
    for (i = 0; i < invenLimit; ++i)
    {
        m_invenItem.GetItem(i, item);

        if(!IsValidItemID(item.ID))
        {
            continue;
        }

        eItemType = EItemType(item.ItemType);

        switch (eItemType)
        {
        case ITEM_ASSET:
            AssetList[numAsset] = item;
            numAtivo = numAtivo + 1;
            pausa;

        case ITEM_WEAPON:
            WeaponList[numWeapon] = item;
            numArma = numArma + 1;
            pausa;

        case ITEM_ARMOR:
            ArmorList[numArmor] = item;
            numArmadura = numArmadura + 1;
            pausa;

        case ITEM_ACCESSARY:
            AccesaryList[numAccessary] = item;
            numAcessório = numAcessório + 1;
            pausa;

        case ITEM_ETCITEM:
            testInt = item.ItemSubType;
            //debug("gggggggg" $ testInt);
            //debug(int(item.ItemSubType));
            switch (EEtcItemType(item.ItemSubType))
            {
            case ITEME_ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_AM:
                AncientCrystalEnchantAmList[numAncientCrystalEnchantAm] = item;
                numAncientCrystalEnchantAm = numAncientCrystalEnchantAm + 1;
                pausa;
            case ITEME_ENCHT_ATTR_ANCIENT_CRYSTAL_ENCHANT_WP:
                AncientCrystalEnchantWpList[numAncientCrystalEnchantWp] = item;
                numAncientCrystalEnchantWp = numAncientCrystalEnchantWp + 1;
                pausa;
            case ITEME_ENCHT_ATTR_CRYSTAL_ENCHANT_AM: CrystalEnchantAmList
                [numCrystalEnchantAm] = item;
                numCrystalEnchantAm = numCrystalEnchantAm + 1;
                pausa;
            case ITEME_ENCHT_ATTR_CRYSTAL_ENCHANT_WP: CrystalEnchantWpList
                [numCrystalEnchantWp] = item;
                numCrystalEnchantWp = numCrystalEnchantWp + 1;
                pausa;
            case ITEME_BLESS_ENCHT_AM:
                BlessEnchantAmList[numBlessEnchantAm] = item;
                numBlessEnchantAm = numBlessEnchantAm + 1;
                pausa;
            caso ITEME_BLESS_ENCHT_WP:
                BlessEnchantWpList[numBlessEnchantWp] = item;
                numBlessEnchantWp = numBlessEnchantWp + 1;
                pausa;
            case ITEME_ENCHT_AM: EnchantAmList
                [numEnchantAm] = item;
                numEnchantAm = numEnchantAm + 1;
                pausa;
            case ITEME_ENCHT_WP:
                EnchantWpList[numEnchantWp] = item;
                numEnchantWp = numEnchantWp + 1;
                pausa;
            case ITEME_ENCHT_ATTR_INC_PROP_ENCHT_AM:
                IncEnchantPropAmList[numIncEnchantPropAm] = item;
                numIncEnchantPropAm = numIncEnchantPropAm + 1;
                pausa;
            case ITEME_ENCHT_ATTR_INC_PROP_ENCHT_WP:
                IncEnchantPropWpList[numIncEnchantPropWp] = item;
                numIncEnchantPropWp = numIncEnchantPropWp + 1;
                pausa;
            case ITEME_POTION:
                PotionList[numPotion] = item;
                numPotion = numPotion + 1;
                pausa;
            case ITEME_ELIXIR:
                ElixirList[numElixir] = item;
                numElixir = numElixir + 1;
                pausa;
            case ITEME_ARROW:
                ArrowList[numArrow] = item;
                numSeta = numSeta + 1;
                pausa;
            case ITEME_BOLT:
                BoltList[numBolt] = item;
                numBolt = numBolt + 1;
                pausa;
            case ITEME_RECIPE:
                RecipeList[numRecipe] = item;
                numReceita = numReceita + 1;
                pausa;
            padrão:
                EtcItemList[numEtcItem] = item;
                numEtcItem = numEtcItem + 1;
                pausa;
            }
            quebrar;

        default:
            debug("hein???");
            EtcItemList[numEtcItem] = item;
            numEtcItem = numEtcItem + 1;
            pausa;
        }
    }

    // 2. 구분 된 아이템들을 각 리스트 당 무게순으로 정렬
    for (i = 0; i < numAsset; ++i)
    {
        for (j = 0; j < numAsset - i; ++j)
        {
            if (j < numAsset - 1)
            {
                if (AssetList[j].Weight <AssetList[j + 1].Weight)
                {
                    temp = AssetList[j];
                    ListadeAtivos[j] = ListadeAtivos[j + 1];
                    Lista de ativos[j + 1] = temp;
                }
            }
        }
    }
    for (i = 0; i < numWeapon; ++i)
    {
        for (j = 0; j < numWeapon - i; ++j)
        {
            if (j < numWeapon - 1)
            {
                if (Lista de Armas[j]. Peso < Lista de Armas[j + 1]. Peso)
                {
                    temp = Lista de Armas[j];
                    Lista de Armas[j] = Lista de Armas[j + 1];
                    Lista de Armas[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numArmor; ++i)
    {
        for (j = 0; j < numArmor - i; ++j)
        {
            if (j < numArmor - 1)
            {
                if (ArmorList[j].Weight < ArmorList[j + 1].Weight)
                {
                    temp = ArmorList[j];
                    ArmorList[j] = ArmorList[j + 1];
                    ArmorList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numAccessary; ++i)
    {
        for (j = 0; j < numAccessary - i; ++j)
        {
            if (j < numAccessary - 1)
            {
                if (AccessaryList[j].Weight < Lista de acessórios[j + 1]. Peso)
                {
                    temp = Lista de acessórios[j];
                    ListaAcessórios[j] = ListaAcessórios[j + 1];
                    Lista de acessórios[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numAncientCrystalEnchantAm; ++i)
    {
        for (j = 0; j < numAncientCrystalEnchantAm - i; ++j)
        {
            if (j < numAncientCrystalEnchantAm - 1)
            {
                if (AncientCrystalEnchantAmList[j].Weight < AncientCrystalEnchantAmList[j + 1].Weight)
                {
                    temp = AncientCrystalEnchantAmList[j];
                    AncientCrystalEnchantAmList[j] = AncientCrystalEnchantAmList[j + 1];
                    AncientCrystalEnchantAmList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numAncientCrystalEnchantWp; ++i)
    {
        for (j = 0; j < numAncientCrystalEnchantWp - i; ++j)
        {
            if (j < numAncientCrystalEnchantWp - 1)
            {
                if (AncientCrystalEnchantWpList[j].Weight < AncientCrystalEnchantWpList[j + 1].Weight)
                {
                    temp = AncientCrystalEnchantWpList[j];
                    AncientCrystalEnchantWpList[j] = AncientCrystalEnchantWpList[j + 1];
                    AncientCrystalEnchantWpList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numCrystalEnchantAm; ++i)
    {
        for (j = 0; j < numCrystalEnchantAm - i; ++j)
        {
            if (j < numCrystalEnchantAm - 1)
            {
                if (CrystalEnchantAmList[j].Weight < CrystalEnchantAmList[j + 1].Weight)
                {
                    temp = CrystalEnchantAmList[j];
                    CrystalEnchantAmList[j] = CrystalEnchantAmList[j + 1];
                    CrystalEnchantAmList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numCrystalEnchantWp; ++i)
    {
        for (j = 0; j < numCrystalEnchantWp - i; ++j)
        {
            if (j < numCrystalEnchantWp - 1)
            {            
                if (CrystalEnchantWpList[j].Weight < CrystalEnchantWpList[j + 1].Weight)
                {
                    temp = CrystalEnchantWpList[j];
                    CrystalEnchantWpList[j] = CrystalEnchantWpList[j + 1];
                    CrystalEnchantWpList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numBlessEnchantAm; ++i)
    {
        for (j = 0; j < numBlessEnchantAm - i; ++j)
        {
            if (j < numBlessEnchantAm - 1)
            {
                if (BlessEnchantAmList[j].Weight < BlessEnchantAmList[j + 1].Weight)
                {
                    temp = BlessEnchantAmList[j];
                    BlessEnchantAmList[j] = BlessEnchantAmList[j + 1];
                    BlessEnchantAmList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numBlessEnchantWp; ++i)
    {
        for (j = 0; j < numBlessEnchantWp - i; ++j)
        {
            if (j < numBlessEnchantWp - 1)
            {
                if (BlessEnchantWpList[j].Weight < BlessEnchantWpList[j + 1].Weight)
                {
                    temp = BlessEnchantWpList[j];
                    BlessEnchantWpList[j] = BlessEnchantWpList[j + 1];
                    BlessEnchantWpList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numEnchantAm; ++i)
    {
        for (j = 0; j < numEnchantAm - i; ++j)
        {
            if (j < numEnchantAm - 1)
            {
                if (EnchantAmList[j].Weight < EnchantAmList[j + 1].Weight)
                {
                    temp = EnchantAmList[j];
                    EnchantAmList[j] = EnchantAmList[j + 1];
                    EnchantAmList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numEnchantWp; ++i)
    {
        for (j = 0; j < numEnchantWp - i; ++j)
        {
            if (j < numEnchantWp - 1)
            {
                if (EnchantWpList[j].Weight < EnchantWpList[j + 1].Weight)
                {
                    temp = EnchantWpList[j];
                    EnchantWpList[j] = EnchantWpList[j + 1];
                    EnchantWpList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numIncEnchantPropAm; ++i)
    {
        for (j = 0; j < numIncEnchantPropAm - i; ++j)
        {
            if (j < numIncEnchantPropAm - 1)
            {
                if (IncEnchantPropAmList[j].Weight < IncEnchantPropAmList[j + 1].Weight)
                {
                    temp = IncEnchantPropAmList[j];
                    IncEnchantPropAmLista[j] = IncEnchantPropAmLista[j + 1];
                    IncEnchantPropAmList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numIncEnchantPropWp; ++i)
    {
        for (j = 0; j < numIncEnchantPropWp - i; ++j)
        {
            if (j < numIncEnchantPropWp - 1)
            {
                if (IncEnchantPropWpList[j].Weight < IncEnchantPropWpList[j + 1].Weight)
                {
                    temp = IncEnchantPropWpList[j];
                    IncEnchantPropWpList[j] = IncEnchantPropWpList[j + 1];
                    IncEnchantPropWpList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numPotion; ++i)
    {
        for (j = 0; j < numPotion - i; ++j)
        {
            if (j < numPotion - 1)
            {
                if (PotionList[j].Weight < Lista de Poções[j + 1]. Peso)
                {
                    temp = Lista de Poções[j];
                    Lista de Poções[j] = Lista de Poções[j + 1];
                    Lista de Poções[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numElixir; ++i)
    {
        for (j = 0; j < numElixir - i; ++j)
        {
            if (j < numElixir - 1)
            {
                if (ListaElixir[j]. Peso < Lista de Elixir[j + 1]. Peso)
                {
                    temp = Lista de Elixir[j];
                    Lista de Elixir[j] = Lista de Elixir[j + 1];
                    ElixirList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numArrow; ++i)
    {
        for (j = 0; j < numArrow - i; ++j)
        {
            if (j < numArrow - 1)
            {
                if (ArrowList[j].Weight < ArrowList[j + 1].Weight)
                {
                    temp = ArrowList[j];
                    ArrowList[j] = ArrowList[j + 1];
                    ArrowList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numBolt; ++i)
    {
        for (j = 0; j < numBolt - i; ++j)
        {
            if (j < numBolt - 1)
            {
                if (BoltList[j].Weight < BoltList[j + 1].Weight)
                {
                    temp = BoltList[j];
                    BoltList[j] = BoltList[j + 1];
                    BoltList[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numRecipe; ++i)
    {
        for (j = 0; j < numRecipe - i; ++j)
        {
            if (j < numRecipe - 1)
            {
                if (RecipeList[j].Weight < RecipeList[j + 1].Weight)
                {
                    temp = BoltList[j];
                    ListaLista de Receitas[j] = ListaLista de Receitas[j + 1];
                    Lista de receitas[j + 1] = temp;
                }
            }
        }
    }

    for (i = 0; i < numEtcItem; ++i)
    {
        for (j = 0; j < numEtcItem - i; ++j)
        {
            if (j < numEtcItem - 1)
            {
                if (EtcItemList[j].Weight < EtcItemList[j + 1].Weight)
                {
                    temp = EtcItemList[j];
                    EtcItemList[j] = EtcItemList[j + 1];
                    EtcItemList[j + 1] = temp;
                }
            }
        }
    }

    // 3. 인벤에 다시 삽입
    InvenClear();
    
    for (i = 0; i < numAsset; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, AssetList[i]);
    }    
    nextSlot = nextSlot + numAsset;

    for (i = 0; i < numWeapon; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, WeaponList[i]);
    }
    próximoSlot = próximoSlot + numArma;

    for (i = 0; i < numArmor; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, ArmorList[i]);
    }
    nextSlot = nextSlot + numArmor;

    for (i = 0; i < numAccessary; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, AccesaryList[i]);
    }
    nextSlot = nextSlot + numAccessary;

    for (i = 0; i < numAncientCrystalEnchantAm; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, AncientCrystalEnchantAmList[i]);
    }
    nextSlot = nextSlot + numAncientCrystalEnchantAm;

    for (i = 0; i < numAncientCrystalEnchantWp; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, AncientCrystalEnchantWpList[i]);
    }
    nextSlot = nextSlot + numAncientCrystalEnchantWp;

    for (i = 0; i < numCrystalEnchantAm; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, CrystalEnchantAmList[i]);
    }
    nextSlot = nextSlot + numCrystalEnchantAm;

    for (i = 0; i < numCrystalEnchantWp; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, CrystalEnchantWpList[i]);
    }
    nextSlot = nextSlot + numCrystalEnchantWp;

    for (i = 0; i < numBlessEnchantAm; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, BlessEnchantAmList[i]);
    }
    nextSlot = nextSlot + numBlessEnchantAm;

    for (i = 0; i < numBlessEnchantWp; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, BlessEnchantWpList[i]);
    }
    nextSlot = nextSlot + numBlessEnchantWp;

    for (i = 0; i < numEnchantAm; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, EnchantAmList[i]);
    }
    nextSlot = nextSlot + numEnchantAm;

    for (i = 0; i < numEnchantWp; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, EnchantWpList[i]);
    }
    nextSlot = nextSlot + numEnchantWp;

    for (i = 0; i < numIncEnchantPropAm; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, IncEnchantPropAmList[i]);
    }
    nextSlot = nextSlot + numIncEnchantPropAm;

    for (i = 0; i < numIncEnchantPropWp; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, IncEnchantPropWpList[i]);
    }
    nextSlot = nextSlot + numIncEnchantPropWp;

    for (i = 0; i < numPotion; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, PotionList[i]);
    }
    nextSlot = nextSlot + numPotion;

    for (i = 0; i < numElixir; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, ElixirList[i]);
    }
    nextSlot = nextSlot + numElixir;

    for (i = 0; i < numArrow; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, ArrowList[i]);
    }
    nextSlot = nextSlot + numSeta;

    for (i = 0; i < numBolt; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, BoltList[i]);
    }
    nextSlot = nextSlot + numBolt;

    for (i = 0; i < numRecipe; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, RecipeList[i]);
    }
    nextSlot = nextSlot + numRecipe;

    for (i = 0; i < numEtcItem; ++i)
    {
        m_invenItem.SetItem(nextSlot + i, EtcItemList[i]);
    }
    nextSlot = nextSlot + numEtcItem;
    
    // TTP #42420 m_invenCount를 InvenClear() 에서 초기화하므로 다시 셋팅해 줘야 합니다. - gorilazina 10.10.29.
    m_invenCount = nextSlot;

    debug("[Sorting Inven Item]" $ nextSlot $ "itens ordenados completos!!");
}
//#endif //CT26P3 - gorillazin

function UpdateTalismanSlotActivation()
{
    local int Contagem;
    local int;
    usuário local UserInfo;
    local ItemInfo DisableItem;
    
    DisableItem.IconName = "L2UI_CT1.Inventory_DF_TalismanSlot_Disable"; //Encontre isso e preencha com o final.
    
    
    
    if( GetPlayerInfo( user ) )
    {
        Count = user.nTalismanNum;
        //~ debug ("Ativação do Talismã" @ user.nTalismanNum);
        
        if (Contagem > 0)
        {
            for (i = 0; i<Contagem; i++)
            {
                m_Talisman_Disable[ i ].HideWindow();
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].Clear();
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].AddItem( DisableItem );
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].DisableWindow();
                m_equipItem[ EQUIPITEM_Deco1 + i ].EnableWindow();
            }
        }
        else
        {
            for (i = 0; i<6; i++)
            {
                m_Talisman_Disable[ i ].ShowWindow();
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].Clear();
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].AddItem( DisableItem );
                m_equipItem[ EQUIPITEM_Deco1 + i ].DisableWindow();
            }
        }
        //~ {
            //~ for (i = 0; i<Count; i++)
            //~ {
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].ClearItem();
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].AddItem( DisableItem );
                //~ m_equipItem[ EQUIPITEM_Deco1 + i ].DisableWindow();
            //~ }
        //~ }
    }
} 
    
function UpdateCloakSlotActivation()
{
    //~ local int i;
    usuário local UserInfo;
    local ItemInfo DisableItem;
    
    DisableItem.IconName = "L2UI_CT1.Inventory_DF_CloakSlot_Disable"; //Encontre isso e preencha com o final.
    
    if( GetPlayerInfo( user ) )
    {
        //~ depurar ("FullArmor" @ user.nFullArmor);
        if (user.nFullArmor > 0)
        {
            m_CloakSlot_Disable.HideWindow();

            //~ for (i = 0; i<Count; i++)
            //~ {
                //~ m_equipItem[ EQUIPITEM_Cloak ].Clear();
                m_equipItem[ EQUIPITEM_Cloak ].EnableWindow();
            //~ }
        }
        else
        {

            m_CloakSlot_Disable.ShowWindow();
            m_equipItem[ EQUIPITEM_Cloak ].DisableWindow();
        }
    }
    else
    {
        //~ debug("UserInfoRetrival Failed");
    }
}


function HandleSetMaxCount(string param)
{
    local int ExtraBeltCount;
    ParseInt (param, "Inventário", m_MaxInvenCount);
    ParseInt (param, "questItem", m_MaxQuestItemInvenCount);
    ParseInt (param, "extrabelt", ExtraBeltCount);
    //~ debug ("SetMaxCount Called");
    m_invenItem.SetExpandItemNum(0, ExtraBeltCount);
    InvenLimitUpdate();
    SetItemCount();
}


function HandleChangeCharacterPawn(string param)
{
    ParseInt (param, "MeshType", m_MeshType);
    switch (m_MeshType)
    {
        case 0:
        // 휴먼_전사_남
        m_ObjectViewport.SetCharacterScale(1.f);
        m_ObjectViewport.SetCharacterOffsetX(-2);
        m_ObjectViewport.SetCharacterOffsetY(-6);                                       
        pausa;
        case 1:
        // 휴먼_전사_여
        m_ObjectViewport.SetCharacterScale(1.03f);
        m_ObjectViewport.SetCharacterOffsetX(-2);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        caso 8:
        // 휴먼_법사_남
        m_ObjectViewport.SetCharacterScale(1.047f);
        m_ObjectViewport.SetCharacterOffsetX(2);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        case 9:
        // 휴먼_법사_여
        m_ObjectViewport.SetCharacterScale(1.07f);
        m_ObjectViewport.SetCharacterOffsetX(-1);
        m_ObjectViewport.SetCharacterOffsetY(-9);                                       
        pausa;
        case 6:
        // 엘프_전사_남
        m_ObjectViewport.SetCharacterScale(0.98f);
        m_ObjectViewport.SetCharacterOffsetX(-2);
        m_ObjectViewport.SetCharacterOffsetY(-7);                                       
        pausa;
        case 7:
        // 엘프_전사_여
        m_ObjectViewport.SetCharacterScale(1.04f);
        m_ObjectViewport.SetCharacterOffsetX(-4);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        // case q
        // 엘프_법사_남
        // SetCharacterOffsetX(-2);
        // SetCharacterOffsetY(-7);
        // 엘프_법사_여
        // SetCharacterOffsetX(-4);
        // SetCharacterOffsetY(-8);
        case 2:
        // 다엘_전사_남
        m_ObjectViewport.SetCharacterScale(0.99f);
        m_ObjectViewport.SetCharacterOffsetX(-1);
        m_ObjectViewport.SetCharacterOffsetY(-7);                                       
        pausa;
        case 3:
        // 다엘_전사_여
        m_ObjectViewport.SetCharacterScale(1.015f);
        m_ObjectViewport.SetCharacterOffsetX(-1);
        m_ObjectViewport.SetCharacterOffsetY(-7);
        pausa;
        // 다엘_법사_남
        // SetCharacterOffsetX(-1);
        // SetCharacterOffsetY(-7);
        // 다엘_법사_여
        // SetCharacterOffsetX(-1);
        // SetCharacterOffsetY(-7);
        case 10:
        // 오크_전사_남                             
        m_ObjectViewport.SetCharacterScale(0.953f);
        m_ObjectViewport.SetCharacterOffsetX(0);
        m_ObjectViewport.SetCharacterOffsetY(-9);                                       
        pausa;
        case 11:
        // 오크_전사_여
        m_ObjectViewport.SetCharacterScale(0.97f);
        m_ObjectViewport.SetCharacterOffsetX(2);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        case 12:
        // 오크_법사_남
        m_ObjectViewport.SetCharacterScale(0.955f);
        m_ObjectViewport.SetCharacterOffsetX(-2);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        case 13:
        // 오크_법사_여
        m_ObjectViewport.SetCharacterScale(0.985f);
        m_ObjectViewport.SetCharacterOffsetX(0);
        m_ObjectViewport.SetCharacterOffsetY(-8);                                       
        pausa;
        case 4:
        // 드워프_
        남 m_ObjectViewport.SetCharacterScale(1.043f);
        m_ObjectViewport.SetCharacterOffsetX(0);
        m_ObjectViewport.SetCharacterOffsetY(-2);                                       
        pausa;
        case 5:
        // 드워프_여
        m_ObjectViewport.SetCharacterScale(1.09f);
        m_ObjectViewport.SetCharacterOffsetX(0);
        m_ObjectViewport.SetCharacterOffsetY(-6);                                       
        pausa;
        case 14:
        // 카마엘_
        남 m_ObjectViewport.SetCharacterScale(0.993f);
        m_ObjectViewport.SetCharacterOffsetX(-5);
        m_ObjectViewport.SetCharacterOffsetY(-6);                                       
        pausa;
        case 15:
        // 카마엘_여
        m_ObjectViewport.SetCharacterScale(1.01f);
        m_ObjectViewport.SetCharacterOffsetX(0);
        m_ObjectViewport.SetCharacterOffsetY(-6);                                       
        pausa;
    }
}

function OnTimer(int TimerID)
{
// local ItemInfo TheItemInfo;
// local ItemInfo TheItemInfoClear;
    switch (TimerID)
    {
        case 1130: 
// AddSystemMessageString("1130 trabalho");

        if (GetDecoIndex(TaliInfo1.Id) != -1) EquipItemUpdate(TaliInfo1);
        if (GetDecoIndex(TaliInfo2.Id) != -1) EquipItemUpdate(TaliInfo2);
        if (GetDecoIndex(TaliInfo3.Id) != -1) EquipItemUpdate(TaliInfo3);
        if (GetDecoIndex(TaliInfo4.Id) != -1) EquipItemUpdate(TaliInfo4);    
        if (GetDecoIndex(TaliInfo5.Id) != -1) EquipItemUpdate(TaliInfo5);    
        if (GetDecoIndex(TaliInfo6.Id) != -1) EquipItemUpdate(TaliInfo6);    
        FingerItemUpdateStart();
        EarItemUpdateStart();
// UpdateTalismanSlotActivation();
    // m_equipItem[17].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
    // m_equipItem[18].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
    // m_equipItem[19].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
    // m_equipItem[20].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
    // m_equipItem[21].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
    // m_equipItem[22].GetItem(0, TheItemInfo);
    // AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
        ExecuteEvent(EV_InventoryUpdateItem);
        m_hInventoryWnd.KillTimer(1130);
        pausa;
// case 1131: 
    
// AddSystemMessageString("1130 trabalho");
    //FingerItemUpdateStart();
    // EarItemUpdateStart();
    // UpdateTalismanSlotActivation();
    /* m_equipItem[17].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name);
            TheItemInfo = TheItemInfoClear;
            m_equipItem[18].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name);
            TheItemInfo = TheItemInfoClear;
            m_equipItem[19].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name);
            TheItemInfo = TheItemInfoClear;
            m_equipItem[20].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name);
            TheItemInfo = TheItemInfoClear;
            m_equipItem[21].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name);
            TheItemInfo = TheItemInfoClear;
            m_equipItem[22].GetItem(0, TheItemInfo);
            AddSystemMessageString(string(GetDecoIndex(TheItemInfo.Id)));
            AddSystemMessageString(TheItemInfo.Name); */
    // TheItemInfo = TheItemInfoClear;
    // ExecuteEvent(EV_InventoryUpdateItem);
// m_hInventoryWnd.KillTimer(1131);
    // m_hInventoryWnd.SetTimer(1131,3000);
        
// pausa;
    }
}

propriedades padrão
{
}

zaken vs tatuagem.jpg

 what ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock