Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Автору темы "Блокировка перемещения рейдфреймов"

Упомянутые в теме пользователи:

Показано с 1 по 7 из 7
  1. #1
    Старожил Аватар для Wbtest2
    Регистрация
    21.02.2015
    Адрес
    Minsk
    Сообщений
    180
    Поблагодарил(а)
    46
    Получено благодарностей: 114 (сообщений: 60).
    Репутация: 114

    Post Автору темы "Блокировка перемещения рейдфреймов"

    Автору темы http://forum.wowcircle.com/showthrea...00#post4515300
    Непонятно зачем создавать тему в разделе, где тебе никто не сможет ответить в ней, не понятно.
    По сабжу:
    Собственно , проблема в том, что, если фрейм RaidPullout1/5 не существует, аддон крашит. Вопрос, как добавить условие на проверку существования фрейма ?
    Ну как вариант так: if RaidPullout1 ~= nil then ... end;, в твоем варианте раз 10 нужно будет условие это вбивать, и это для 5 фреймов, это не очень целесообразно даже если функцию сделать простенькую, а если фреймов нужно больше чем 5, например 25, то будет просто гора кода. По моему лучшим вариантом в данной ситуации зная имена фреймов будет перебрать все дочерние фреймы у UIParent и отсеять нужные и уже с ними работать.

    Скрытый текст

    PHP код:
    --Блок рейдфреймов
    local button 
    CreateFrame("Button"idRaidFrame"UIPanelButtonTemplate");
    local text "блокировка позиции рейдфреймов вкл/выкл";
    button:SetSize(8018);
    button:SetScale(1.0);
    button:SetAlpha(1.0);
    button:SetPoint("CENTER"RaidFrame"TOP", -84, -24);
    button:SetText("блок");
    button:SetScript("OnLeave", function() GameTooltip:Hide()  end);
    button:SetScript("OnEnter", function()
        
    GameTooltip:SetOwner(button"ANCHOR_RIGHT");
        
    GameTooltip:AddLine(text);
        
    GameTooltip:Show();
    end);

    button:SetScript("OnClick", function(selfbutton)
        
    local Report false;
        for 
    1,select('#',UIParent:GetChildren()) do
            
    local frame select(iUIParent:GetChildren());
            if 
    frame:GetName() and frame:GetName():find('RaidPullout%d'then
                
    if frame:IsMovable() then 
                    frame
    :SetMovable(false);
                    
    frame:EnableMouse(false);
                    if 
    Report == false then
                        
    print("|cff00ff00[блок рейдфреймов ВКЛЮЧЕН]|r");
                        
    Report true;
                    
    end;
                else
                    
    frame:SetMovable(true);
                    
    frame:EnableMouse(true);
                    if 
    Report == false then
                        
    print("|cFFF00000[блок рейдфреймов ОТКЛЮЧЕН]|r");
                        
    Report true;
                    
    end;
                
    end;
            
    end;
        
    end;
    end
    [свернуть]

    Не проверял, но вроде должно работать.))

  2. 1 пользователь сказал cпасибо Wbtest2 за это полезное сообщение:

    аффтор (10.03.2015)

  3. #2
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,178
    Поблагодарил(а)
    358
    Получено благодарностей: 1,438 (сообщений: 838).
    Репутация: 2398
    Цитата Сообщение от Wbtest2 Посмотреть сообщение
    Не проверял, но вроде должно работать.))
    результат выйдет немного не таким каким ты его ожидаешь =)

  4. 1 пользователь сказал cпасибо DreamlØlz за это полезное сообщение:

    аффтор (10.03.2015)

  5. #3
    Активист Аватар для аффтор
    Регистрация
    05.01.2012
    Сообщений
    41
    Поблагодарил(а)
    79
    Получено благодарностей: 27 (сообщений: 18).
    Репутация: 34
    Огромное спасибо, find('название фрейма%d') возьму на заметку, очень помог.

  6. #4
    Старожил Аватар для Wbtest2
    Регистрация
    21.02.2015
    Адрес
    Minsk
    Сообщений
    180
    Поблагодарил(а)
    46
    Получено благодарностей: 114 (сообщений: 60).
    Репутация: 114
    результат выйдет немного не таким каким ты его ожидаешь =)
    Обычно да ), но тут всего 21 строчка считая энды, не должно)

  7. #5
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,178
    Поблагодарил(а)
    358
    Получено благодарностей: 1,438 (сообщений: 838).
    Репутация: 2398
    PHP код:
    local button CreateFrame("Button"idRaidFrame"UIPanelButtonTemplate");  
    button:SetSize(8018);  
    button:SetPoint("CENTER"RaidFrame"TOP", -84, -24); 
    button:SetText("Блок"); 
    local lock true;
    button:SetScript("OnClick",function(self)
        if(
    lockthen
            
    print("|cff00ff00[Рейд фреймы заблокированы]|r");
            for 
    1select('#',UIParent:GetChildren()) do
                if 
    select(i,UIParent:GetChildren()):GetName() and string.find(select(i,UIParent:GetChildren()):GetName(), "RaidPullout"then
                    
    if select(i,UIParent:GetChildren()):IsMovable() then select(i,UIParent:GetChildren()):EnableMouse(false); end;
                
    end;
            
    end;
            else
                print(
    "|cff00ff00[Рейд фреймы разблокированы]|r")
            for 
    1select('#',UIParent:GetChildren()) do
                if 
    select(i,UIParent:GetChildren()):GetName() and string.find(select(i,UIParent:GetChildren()):GetName(), "RaidPullout"then
                    select
    (i,UIParent:GetChildren()):EnableMouse(true);
                
    end;
            
    end;
        
    end;
        
    lock not lock;
    end); 
    - - - Updated - - -

    Цитата Сообщение от Wbtest2 Посмотреть сообщение
    Обычно да ), но тут всего 21 строчка считая энды, не должно)
    Чота мне это нейм плейты напомнило , хотя можно сделать в 1 итерацию и 2 условия Ну я про ADDON_LOAD говорю )))

    PS не понравился твой флажок :p
    Последний раз редактировалось DreamlØlz; 11.03.2015 в 01:26.

  8. #6
    Старожил Аватар для Wbtest2
    Регистрация
    21.02.2015
    Адрес
    Minsk
    Сообщений
    180
    Поблагодарил(а)
    46
    Получено благодарностей: 114 (сообщений: 60).
    Репутация: 114
    PS не понравился твой флажок
    Ну сходу набросал, по типу как для неймплейтов делал, потом понял если так оставить, то принт в чат не 1 раз, а столько сколько фреймов ну и флажок какой вышел чтоб не менять ничего). Главное ведь идею подать, а там аффтор сам допилил бы как ему по душе если нужно.

    PS у тебя в чат будет писать даже если нету этих рейдфреймов )
    Последний раз редактировалось Wbtest2; 11.03.2015 в 08:43.

  9. 1 пользователь сказал cпасибо Wbtest2 за это полезное сообщение:

    аффтор (12.03.2015)

  10. #7
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,178
    Поблагодарил(а)
    358
    Получено благодарностей: 1,438 (сообщений: 838).
    Репутация: 2398
    Цитата Сообщение от Wbtest2 Посмотреть сообщение
    PS у тебя в чат будет писать даже если нету этих рейдфреймов )
    Я изначально в чат писал , что бы проверить флажок))

Похожие темы

  1. Ответов: 3
    Последнее сообщение: 01.08.2012, 19:26
  2. Ответов: 1
    Последнее сообщение: 11.05.2012, 19:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •