Jump to content

Recommended Posts

Posted (edited)
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
Posted

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 ?

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...