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

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

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 12 из 16
  1. #1
    Эксперт
    Регистрация
    26.12.2019
    Сообщений
    581
    Поблагодарил(а)
    26
    Получено благодарностей: 59 (сообщений: 44).
    Репутация: 59

    Нужно срочно переделать аддон

    Короче как сделать проверку на нахождение в ЧСе персонажа? Чтобы вставить в функцию приёма сообщений и остального? Сколько аддонов есть все страдают отсутствием этой функции. Звуки приходят просто так если персонаж даже в игноре. Приём в гильдию, да много чего. На циркуле есть какой-то свой локальный ЧС (называемый до релога) когда сообщаешь "о спаме". Это одно и то же? Или есть разница? Как его определить?

    - - - Updated - - -

    PHP код:
    function SCCN_PLAYSOUND(id)
        
    ChatMOD_debug("SCCN_PLAYSOUND",id)
        if 
    id >= and id <= 5 then
            
    -- Workaround for Sound ProblemSome client's need a initial sound playing before the actual sound starts. engine bug !?!? 
            -- However, this worls.  -solariz-
            -- Changes:
            -- 16.10.2007 23:30:19 - Again trying to get rid of the MAC Crash bug.
            local soundfile = tostring("Interface\\AddOns\\ChatMOD\\audio\\"..id..".mp3");
                PlaySound("GAMEHIGHLIGHTFRIENDLYUNIT")
                PlaySoundFile(soundfile)
        end
    end 
    Вот к примеру функция проигрыша звуков при ЛС. Даже если персонаж в ЧС от него всёравно идут звуки.

    Где-то здесь должна быть проверка на нахождение в ЧС.
    PHP код:
    function SCCN_PLAYSOUND(id)
        
    ChatMOD_debug("SCCN_PLAYSOUND",id)
        if 
    id >= and id <= and BlackList == nil then
            local soundfile 
    tostring("Interface\\AddOns\\ChatMOD\\audio\\"..id..".mp3");
                
    PlaySound("GAMEHIGHLIGHTFRIENDLYUNIT")
                
    PlaySoundFile(soundfile)
        
    end
    end 
    Но как обозначить локальные данные?
    Последний раз редактировалось Worldwidex; 02.04.2020 в 09:34.

  2. #2
    Активист
    Регистрация
    25.02.2020
    Сообщений
    79
    Поблагодарил(а)
    1
    Получено благодарностей: 7 (сообщений: 4).
    Репутация: 7
    {v/

    - - - Updated - - -

    Цитата Сообщение от Worldwidex Посмотреть сообщение
    Но как обозначить локальные данные?
    Локальные данные будут выглядеть так: IsIgnore
    Супер ком. для повышения роботоспособностиразрботч ика
    Цитата Сообщение от ChtozaWTF Посмотреть сообщение
    @n0n4m3 увольте анимагуса, он для вида работает
    Цитата Сообщение от ChtozaWTF
    Кто сказал что на Офе времён WOTlK работало всё "правильно"? И что добытые доказательства не просто свидетельство неправильной работы ожидающей фиксов? Кому известны подлинные замыслы творцов Blizzard относительно работоспособности? Фиксить надо не так как работало, а чтобы @опа не горела. Это и есть подлинный замысел продукта коммерциализации Blizzard Inс. и единственный критерий исправлений.

  3. #3
    Наш человек Аватар для Vasja_1
    Регистрация
    19.11.2015
    Сообщений
    890
    Поблагодарил(а)
    72
    Получено благодарностей: 94 (сообщений: 78).
    Репутация: 865
    Цитата Сообщение от Worldwidex Посмотреть сообщение
    Где-то здесь должна быть проверка на нахождение в ЧС
    И где же она?

  4. #4
    Почетный флудер Аватар для Artur91425
    Регистрация
    25.10.2012
    Адрес
    Россия
    Сообщений
    2,772
    Поблагодарил(а)
    339
    Получено благодарностей: 560 (сообщений: 391).
    Репутация: 1049
    Eсли я правильно понял тебя, то вот: ChatMOD.lua

    P.S. Использовал версию Fanupdate 135

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

    Vasja_1 (25.05.2020)

  6. #5
    Наш человек Аватар для Vasja_1
    Регистрация
    19.11.2015
    Сообщений
    890
    Поблагодарил(а)
    72
    Получено благодарностей: 94 (сообщений: 78).
    Репутация: 865
    Цитата Сообщение от Artur91425 Посмотреть сообщение
    Eсли я правильно понял тебя, то вот: ChatMOD.lua

    P.S. Использовал версию Fanupdate 135
    PHP код:
    local function checkIgnore(playerName)
        if 
    not playerName then return end
        
    for 1GetNumIgnores() do
            if 
    GetIgnoreName(i) == playerName then
                
    return true
            end
        end
        
    return
    end 
    Да кстати - оно и есть, спасибо

  7. #6
    Почетный флудер Аватар для Artur91425
    Регистрация
    25.10.2012
    Адрес
    Россия
    Сообщений
    2,772
    Поблагодарил(а)
    339
    Получено благодарностей: 560 (сообщений: 391).
    Репутация: 1049
    Но это немного не рациальное решение. В идеале конечно при заходе в игру запускать скан листа и при его обновлении, записывать в отдельную таблицу и уже проверять по таблице. А то сейчас у тебя при каждом сообщении сканится список, а он изменяется ведь очень редко)

  8. #7
    Наш человек Аватар для Vasja_1
    Регистрация
    19.11.2015
    Сообщений
    890
    Поблагодарил(а)
    72
    Получено благодарностей: 94 (сообщений: 78).
    Репутация: 865
    Цитата Сообщение от Artur91425 Посмотреть сообщение
    А то сейчас у тебя при каждом сообщении
    При каждом личном? Или вообще? Если личка то она не так часто
    А при общем как переделать?

  9. #8
    Почетный флудер Аватар для Artur91425
    Регистрация
    25.10.2012
    Адрес
    Россия
    Сообщений
    2,772
    Поблагодарил(а)
    339
    Получено благодарностей: 560 (сообщений: 391).
    Репутация: 1049
    Вообще при каждом сообщении в любой вкладке чата)
    Чтобы посмотреть как часто можешь в самое начало функции checkIgnore дописать
    print("любой текст") и в игре в первой вкладке чата тебе будет печатать этот текст каждый раз когда аддон заходит в эту функцию для скана списка.

  10. #9
    Наш человек Аватар для Vasja_1
    Регистрация
    19.11.2015
    Сообщений
    890
    Поблагодарил(а)
    72
    Получено благодарностей: 94 (сообщений: 78).
    Репутация: 865
    Цитата Сообщение от Artur91425 Посмотреть сообщение
    Вообще при каждом сообщении в любой вкладке чата)
    Чтобы посмотреть как часто можешь в самое начало функции checkIgnore дописать
    print("любой текст") и в игре в первой вкладке чата тебе будет печатать этот текст каждый раз когда аддон заходит в эту функцию для скана списка.
    УУУ КАк это жоскаа
    Каждые 0.000000000000000000001 сек спамит по 10 строк
    Как добавить таблицу при заходе?

  11. #10
    Почетный флудер Аватар для Artur91425
    Регистрация
    25.10.2012
    Адрес
    Россия
    Сообщений
    2,772
    Поблагодарил(а)
    339
    Получено благодарностей: 560 (сообщений: 391).
    Репутация: 1049
    Ну вот и каждые 0.....1 секунды он пробегает по ВСЕМУ списку игнора. Когда он пустой и 1-2 записи это не проблема, но когда будет 50+ записей может немного подлагивать)
    если будет вечером, после работы, время и силы постараюсь это сделать)

  12. #11
    Почетный флудер Аватар для Artur91425
    Регистрация
    25.10.2012
    Адрес
    Россия
    Сообщений
    2,772
    Поблагодарил(а)
    339
    Получено благодарностей: 560 (сообщений: 391).
    Репутация: 1049
    Накидал по-быстрому, проверь плз, а то я думаю за комп сяду только через несколько часов и то не факт
    PHP код:
    local f CreateFrame("Frame")
    f:RegisterEvent("VARIABLES_LOADED")
    f:RegisterEvent("IGNORELIST_UPDATE")
    f.cacheIgnoreList = {}
    f:SetScript("OnEvent", function()
        
    f.cacheIgnoreList = {}
        for 
    1GetNumIgnores() do
            
    self.cacheIgnoreList[GetIgnoreName(i)] = true
        end
    end
    )
    local function checkIgnore(playerName)
        if 
    not playerName then return end
        
    if self.cacheIgnoreList[playerNamethen
            
    return true
        end
        
    return
    end 
    P.S. только проверь, что перед каждым вызовом checkIgnore должно стоять "not", то есть
    PHP код:
    if ... not checkIgnore(...) ... then 
    а то я вчера вроде где-то забыл поставить... там она в двух местах вызывается. По поиску легко найдешь.

  13. #12
    Наш человек Аватар для Vasja_1
    Регистрация
    19.11.2015
    Сообщений
    890
    Поблагодарил(а)
    72
    Получено благодарностей: 94 (сообщений: 78).
    Репутация: 865
    Цитата Сообщение от Artur91425 Посмотреть сообщение
    Накидал по-быстрому, проверь плз, а то я думаю за комп сяду только через несколько часов и то не факт
    PHP код:
    local f CreateFrame("Frame")
    f:RegisterEvent("VARIABLES_LOADED")
    f:RegisterEvent("IGNORELIST_UPDATE")
    f.cacheIgnoreList = {}
    f:SetScript("OnEvent", function()
        
    f.cacheIgnoreList = {}
        for 
    1GetNumIgnores() do
            
    self.cacheIgnoreList[GetIgnoreName(i)] = true
        end
    end
    )
    local function checkIgnore(playerName)
        if 
    not playerName then return end
        
    if self.cacheIgnoreList[playerNamethen
            
    return true
        end
        
    return
    end 
    P.S. только проверь, что перед каждым вызовом checkIgnore должно стоять "not", то есть
    PHP код:
    if ... not checkIgnore(...) ... then 
    а то я вчера вроде где-то забыл поставить... там она в двух местах вызывается. По поиску легко найдешь.
    Лагает очень сильно
    Фриз в игре каждые N секунд

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 18
    Последнее сообщение: 02.06.2017, 22:25
  2. Ответов: 1
    Последнее сообщение: 01.05.2017, 10:02
  3. Ответов: 1
    Последнее сообщение: 30.04.2017, 22:07
  4. Взрыв ползучей мины (занижен урон) Важно!!!Критично!!!
    от Luxor1991 в разделе Железный исполин
    Ответов: 4
    Последнее сообщение: 30.04.2017, 20:13
  5. Ответов: 4
    Последнее сообщение: 07.04.2017, 00:45

Ваши права

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