2024 년에도 울온을

스토리 이벤트 : 타락한 브리튼 총독 / 블로그 8만 방문 이벤트 종료 / 10월 할로윈 이벤트 중

서드파티 & 매크로/Orion 사용법 & 스크립트

[Orion] 장비 내구도 확인

작성자 : Tina ♥ 님 2024. 5. 21. 10:45
[작성자] Tina ♥ 님


Encore님이 제공해 주셨습니다.   ^^

 

 

 

 

내구도를 아래와 같이 확인할 수 있습니다.

 

내구도가 30프로 이하일 때 아래와 같이 표시되며, 

 

 

 

 

내구도가 30프로 이상일 때는

 

아래와 같이 표시됩니다.

 

 

 

 

기존 스크립에 합치시려면 아래 문구를 추가하시고

 

 

딜레이를 길게 주시면 큰 무리 없이 사용이 가능합니다. ^^

 

Orion.Exec('Durability_watcher', true);

 

 

 

function Durability_watcher() {
    // author : Encore
    // 수정가능이라고 작성된 부분은 수정하여 사용 가능합니다.

    var delay = 3; // 수정가능 : 몇 초 마다 업데이트할지
    var percent_yellow = 30; // 수정가능 : 내구도가 이 숫자(%)보다 낮으면 노란색
    var percent_red = 10; // 수정가능 : 내구도가 이 숫자(%)보다 낮으면 빨간색
    var show_all_items = false; // 수정가능 : true -> 내구도 높은 아이템도 다 보여줌 / false -> 내구도 높은 아이템 숨김
    var space_between_lines = 17; // 수정가능 : 글자 행간
    
    // Create the gump 
    var gump = Orion.CreateCustomGump(72);  
    
    while (true) {
        if (!Player.Dead()) {
            var d = 60; // Initial vertical position of the text
            var y = 90; // Initial height of the gump

            var items = [];
             
            for (var i = 1; i < 25; i++) {  
                if (Orion.ObjAtLayer(i)) {  
                    var item = Orion.ObjAtLayer(i);  
                    var properties = item.Properties();  
                    if (Orion.Contains(item.Properties(), 'Durability') || Orion.Contains(item.Properties(), '내구도')) {
                        var properties = item.Properties();
                        var matches = /(Durability|내구도) (\d+)\s\/\s(\d+)/.exec(properties);
                        if (matches && matches.length > 2) {
                            var durability = Number(matches[2]);
                            var maxDurability = Number(matches[3]);
                            var textColor = '0x09C1';
                            
                            // 색깔 지정
                            if ((durability / maxDurability * 100) < percent_red) {
                                textColor = '0x0025'; 
                            } else if ((durability / maxDurability * 100) < percent_yellow) {
                                textColor = '0x0035'; 
                            }
                            else
                            {
                                if(!show_all_items)
                                {
                                    continue;
                                }
                            }
                            var itemName = item.Name();
                            if(itemName.length > 30 && Orion.Contains(item.Properties(), 'Durability'))
                            {
                                itemName = itemName.substring(0,30) + "...";
                            }
                            else if(itemName.length > 15)
                            {
                                itemName = itemName.substring(0,15) + "...";
                            }
                            items.push({'name':itemName, 'color':textColor, 'dura':durability, 'max':maxDurability});
                        }
                        y += space_between_lines;  
                        Orion.Wait(10);  
                    }
                    Orion.Wait(10);  
                }
            }
            
            
            gump.Clear();  
            gump.AddResizepic(0, 0, '302', 320, y);  
            gump.AddResizepic(0, 0, '302', 320, 50);  
            gump.AddText(130, 15, '40', '내 구 도');
            
            gump.AddTilePic(90, 12, '0x0FB5');
            gump.AddTilePic(190, 12, '0x1414');

            // 실제 출력
            for (i in items) {
                gump.AddText(25, d, items[i].color, items[i].name); 
                gump.AddText(240, d, items[i].color, items[i].dura + "/" + items[i].max); 
                d += space_between_lines; 
            }
            if(items.length == 0)
            {
                gump.AddText(18, 55, '0x0111', '모든 장비의 내구도가 '+ percent_yellow +'%가 넘습니다.'); 
            }
            gump.Update(); 
        }
        Orion.Wait(delay * 1000);
    }
}