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

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

Показано с 1 по 9 из 9

Тема: killshot

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Новичок
    Регистрация
    30.03.2021
    Сообщений
    3
    Поблагодарил(а)
    0
    Получено благодарностей: 0 (сообщений: 0).
    Репутация: 0

    killshot

    Доброго вечера!
    Ползал по форуму, искал инфу, но не нашел, может офк плохо искал, но как вписать в уведы какой скилл и сколько дмг нанес?
    Буду рад вашим подсказкам :3

  2. #2
    Инопланетянин Аватар для Arancar
    Регистрация
    15.02.2012
    Сообщений
    4,470
    Поблагодарил(а)
    568
    Получено благодарностей: 629 (сообщений: 483).
    Репутация: 2733
    Зачем это всё если убитый тобою персонаж этого не увидит.
    Только если писать в чат локации Общий

  3. #3
    Новичок
    Регистрация
    30.03.2021
    Сообщений
    3
    Поблагодарил(а)
    0
    Получено благодарностей: 0 (сообщений: 0).
    Репутация: 0
    да мне для себя просто

  4. #4
    Гуру Аватар для Shopenhauer
    Регистрация
    29.06.2023
    Адрес
    Ústí nad Labem
    Сообщений
    384
    Поблагодарил(а)
    22
    Получено благодарностей: 20 (сообщений: 19).
    Репутация: 20
    Тоже не смог найти как такое сделать, чтоб видеть сколько прилетело последней плюхой.

    Если кто знает как, подскажите пожалуйста :)

  5. #5
    Бета-тестер(wotlk) Аватар для Alone.pwnz
    Регистрация
    20.02.2019
    Адрес
    Rai
    Сообщений
    1,598
    Поблагодарил(а)
    134
    Получено благодарностей: 183 (сообщений: 144).
    Репутация: 333
    У меня есть, но там без звуков, без этого не смог сделать я там код прописал луа и настройки только через блокнот там менять надписи и тд

    - - - Updated - - -

    А так можно спросить кто шарит в создании аддонов что бы со звуком тебе сделали и настройки надписей через игру менять.

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

    Shopenhauer (04.08.2025)

  7. #6
    Гуру Аватар для Shopenhauer
    Регистрация
    29.06.2023
    Адрес
    Ústí nad Labem
    Сообщений
    384
    Поблагодарил(а)
    22
    Получено благодарностей: 20 (сообщений: 19).
    Репутация: 20
    Цитата Сообщение от Alone.pwnz Посмотреть сообщение
    У меня есть, но там без звуков, без этого не смог сделать я там код прописал луа и настройки только через блокнот там менять надписи и тд

    - - - Updated - - -

    А так можно спросить кто шарит в создании аддонов что бы со звуком тебе сделали и настройки надписей через игру менять.

    Ух блин, я понял о чем ты, жалко я не разбираюсь как все это прописывать в внутреннем коде аддона.
    Но спасибо, что подсказал направление действий, казалось что это проще делается.

    Надеюсь в эту тему может кто заглянет, и напишет как поэтапно такое сделать.

    Пока что текст стоит по стандарту.
    Как у многих, гадостей писать не хочется, в сообщении об убийстве :)

    Такой вопрос видимо надо задавать в разделе по аддонам, раз так все заморочено :(

  8. #7
    Эксперт
    Регистрация
    01.09.2018
    Сообщений
    554
    Поблагодарил(а)
    17
    Получено благодарностей: 264 (сообщений: 186).
    Репутация: 2462
    Цитата Сообщение от Shopenhauer Посмотреть сообщение
    Ух блин, я понял о чем ты, жалко я не разбираюсь как все это прописывать в внутреннем коде аддона.
    Но спасибо, что подсказал направление действий, казалось что это проще делается.

    Надеюсь в эту тему может кто заглянет, и напишет как поэтапно такое сделать.

    Пока что текст стоит по стандарту.
    Как у многих, гадостей писать не хочется, в сообщении об убийстве :)

    Такой вопрос видимо надо задавать в разделе по аддонам, раз так все заморочено :(
    Замени содержимое Killshot.lua
    Код:
    local version = "v1.16 (09-10-2010)";
    local killingstreak = 0;
    local lastKillSpell = nil;
    local lastKillDamage = nil;
    
    loaded = 0;
    
    local frame = CreateFrame("FRAME");
    frame:RegisterEvent("ADDON_LOADED");
    frame:RegisterEvent("PLAYER_LOGOUT");
    
    function frame:OnEvent(event)
    	if (event == "ADDON_LOADED") then
    		if (loaded == 0) then
    			loaded = 1;
    			if (savevar == 1) then
    				kshot:Print("Killshot preferences are loaded. "); 
    				if (soundpackvar == nil) then
    					soundpackvar =  1;
    					kshot:Print("Loaded soundpackvar = nil, changed it to [1]");
    				end
    				if (resetonzonechangevar == nil) then
    					resetonzonechangevar = "yes";
    					kshot:Print("Loaded resetonzonechangevar = nil, changed it to [yes]");
    				end
    				if (ksmsg == nil) then
    					ksmsg = "pwned";
    					kshot:Print("Loaded ksmsg = nil, changed it to [pwned]");
    				end
    				if (soundon == nil) then
    					soundon = "yes";
    					kshot:Print("Loaded soundon = nil, changed it to [yes]");
    				end
    				if (texton == nil) then
    					texton = "yes";
    					kshot:Print("Loaded texton = nil, changed it to [yes]");
    				end
    				if (emoteon == nil) then
    					emoteon = "yes";
    					kshot:Print("Loaded emoteon = nil, changed it to [yes]");
    				end
    				if (maxkillingstreak == nil) then
    					maxkillingstreak = 0;
    					kshot:Print("Loaded maxkillingstreak = nil, changed it to [0]");
    				end
    				if (totalkillingstreak == nil) then
    					totalkillingstreak = 0;
    					kshot:Print("Loaded totalkillingstreak = nil, changed it to [0]");
    				end
    				if (killingstreaktimes == nil) then
    					killingstreaktimes = 0;
    					kshot:Print("Loaded killingstreaktimes = nil, changed it to [0]");
    				end
    			else
    				kshot:ResetAll();
    			end
    		end
    	end
    end
    
    frame:SetScript("OnEvent", frame.OnEvent);
    
    local options = { 
        type='group',
        args = {
    	    reset = {
                type = 'execute',
                name = 'Reset Killshot streak',
                desc = 'Reset Killshot streak',
                func = "ResetKillshotStreak"
            },
    		zone = {
                type = 'execute',
                name = 'Switch reset streak on zone change on/off',
                desc = 'Switch reset streak on zone change on/off',
                func = "ResetOnZoneChange"
            },
    		soundpack = {
                type = 'execute',
                name = 'Switch between soundpacks',
                desc = 'Switch between soundpacks',
                func = "SoundPackChange"
            },
            checkguild = {
                type = 'execute',
                name = 'Check Guild versions',
                desc = 'Check Guild versions',
                func = "CheckGuildVersions"
            },
            checkbg = {
                type = 'execute',
                name = 'Check Battlegroup Versions',
                desc = 'Check BG Versions',
                func = "CheckBGVersions"
            },
            checkraid = {
                type = 'execute',
                name = 'Check Raid Versions',
                desc = 'Check Raid Versions',
                func = "CheckRaidVersions"
            },
            msg = {
                type = 'text',
                name = 'Killshot Message',
                desc = 'Killshot Message',
                usage = "<message>",
                get = "getMessage",
                set = "setMessage"
            },
    		sound = {
                type = 'execute',
                name = 'Disable / Enable Sounds',
                desc = 'Disable / Enable Sounds',
                func = "SoundChange"
            },
    		text = {
                type = 'execute',
                name = 'Disable / Enable Text',
                desc = 'Disable / Enable Text',
                func = "TextChange"
            },
    		emote = {
                type = 'execute',
                name = 'Disable / Enable the Emote',
                desc = 'Disable / Enable the Emote',
                func = "EmoteChange"
            },
    		resetall = {
                type = 'execute',
                name = 'Reset everything to the default',
                desc = 'Reset everything to the default',
                func = "ResetAll"
            },
    		streak = {
                type = 'execute',
                name = 'Shows your current streak number',
                desc = 'Shows your current streak number',
                func = "EchoStreak"
            },
    		streakmax = {
                type = 'execute',
                name = 'Shows your highest streak',
                desc = 'Shows your highest streak',
                func = "EchoMaxStreak"
            },
    		streakavg = {
                type = 'execute',
                name = 'Shows your average streak',
                desc = 'Shows your average streak',
                func = "EchoAverageStreak"
            },
    		streakdeleteall = {
                type = 'execute',
                name = 'Deletes all streak information (also your highest streak)',
                desc = 'Deletes all streak information (also your highest streak)',
                func = "ResetStreakInfo"
            }
        }
    };
    
    kshot = AceLibrary("AceAddon-2.0"):new("AceConsole-2.0", "AceEvent-2.0", "AceDB-2.0");
    kshot:RegisterChatCommand({"/ks"}, options);
    kshot:RegisterChatCommand({"/kshot"}, options);
    kshot:RegisterChatCommand({"/killshot"}, options);
    kshot:RegisterDB("kshotDB", "kshotDBPC");
    kshot:RegisterDefaults("profile", {
    		soundpath = "Interface\\AddOns\\Killshot\\sounds\\"
    	} 
    );
    
    function kshot:OnEnable()
        self:RegisterEvent("kshot_SoundEvent", "SoundEventHandler");
        self:RegisterEvent("PLAYER_DEAD", "PlayerDeathHandler");
        self:RegisterEvent("CHAT_MSG_ADDON", "AddonMessageHandler");
        self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED", "CombatLogEventHandler");
        self:RegisterEvent("ZONE_CHANGED_NEW_AREA", "ZoneChangedHandler");
    end
    
    function kshot:SoundEventHandler(sound)
        if not (PlaySoundFile(sound)) then
            self:ScheduleEvent("kshot_SoundEvent", 0.2, sound);
        end
    end
    
    function kshot:ZoneChangedHandler()
        if (resetonzonechangevar == "yes") then 
    		kshot:Print("Killshot streaks reset on zone change. Typ /kshot zone to prevent this the next time."); 
    		killingstreak = 0;
    	end
    end
    
    function kshot:AddonMessageHandler(prefix, text, type, target)
        if not (target == UnitName("player")) then
            if (prefix == "kshot_txt") then
                kshot:Print(text);
            elseif (prefix == "kshot_ScrollingTextEvent") then
                kshot:ScrollText(text, false);
            elseif (prefix == "kshot_KillSoundEvent") then
                kshot:kshot_SoundPack(kshot:GetKillshotSound(tonumber(text)));
            elseif (prefix == "kshot_BGVersionCheckRequest") then
                kshot:kshot_SendVersionResponse(text, "BATTLEGROUND");
            elseif (prefix == "kshot_RaidVersionCheckRequest") then
                kshot:kshot_SendVersionResponse(text, "RAID");
            elseif (prefix == "kshot_GuildVersionCheckRequest") then
                kshot:kshot_SendVersionResponse(text, "GUILD");
            elseif (prefix == "kshot_VersionCheckResponse") then
                local nameLength = string.len(UnitName("player"));
                if (UnitName("player") == string.sub(text, 0, nameLength)) then
                    local startIndex = nameLength + 2;
                    kshot:Print(string.sub(text, startIndex));
                else
                    kshot:Print("didn't match: " .. text);
                end
            end
        end
    end
    
    function kshot:CombatLogEventHandler(timestamp, event, sourceGUID, sourceName, sourceFlags, destGUID, destName, destFlags, ...)
        if (not UnitIsPVP("Player")) then return; end;
        if (event == nil) then return; end;
    
        if event:find("_DAMAGE$") then
            if bit.band(destFlags or 0, COMBATLOG_OBJECT_TYPE_PLAYER) == COMBATLOG_OBJECT_TYPE_PLAYER and
               bit.band(sourceFlags or 0, COMBATLOG_OBJECT_AFFILIATION_MINE) == COMBATLOG_OBJECT_AFFILIATION_MINE then
    
                local spellId, spellName, _, amount, overkill = select(1, ...);
                if event == "SWING_DAMAGE" then
                    spellId = 6603; -- автоатака
                    spellName = "Melee";
                    _, _, _, amount, overkill = select(1, ...);
                end
    
                if overkill and overkill > 0 then
                    lastKillSpell = GetSpellLink(spellId) or spellName or "Unknown";
                    lastKillDamage = amount or 0;
                end
            end
        end
    
        if (event == "PARTY_KILL") then
            if (sourceFlags == nil) then return; end;
            if (destName == nil) then return; end;
            if (destFlags == nil) then return; end;
    
            if (bit.band(sourceFlags, COMBATLOG_OBJECT_AFFILIATION_MINE) == COMBATLOG_OBJECT_AFFILIATION_MINE) then
                if (bit.band(destFlags, COMBATLOG_OBJECT_TYPE_PLAYER) == COMBATLOG_OBJECT_TYPE_PLAYER) then
                    kshot:kshot_Killshot(UnitName("player"), destName, lastKillSpell, lastKillDamage);
                elseif (bit.band(destFlags, COMBATLOG_OBJECT_TYPE_PET) == COMBATLOG_OBJECT_TYPE_PET) then
                    if (bit.band(destFlags, COMBATLOG_OBJECT_CONTROL_PLAYER) == COMBATLOG_OBJECT_CONTROL_PLAYER and
                        not bit.band(destFlags, COMBATLOG_OBJECT_AFFILIATION_MINE) == COMBATLOG_OBJECT_AFFILIATION_MINE) then
                        kshot:kshot_Killshot(UnitName("player"), "an enemy pet, " .. destName, lastKillSpell, lastKillDamage);
                    end
                end
            end
        end
    end
    
    function kshot:EchoStreak()
    	kshot:ScrollText("Your current streak is: " .. killingstreak, true);
    end
    
    function kshot:EchoMaxStreak()
    	kshot:ScrollText("Your highest streak is: " .. maxkillingstreak, true);
    end
    
    function kshot:EchoAverageStreak()
    	avg = totalkillingstreak/killingstreaktimes;
    	if(totalkillingstreak == 0) then
    		avg = 0;
    	end
    	kshot:ScrollText("Your average streak is: " .. avg, true);
    	kshot:Print("Amount of killingstreaks: " .. killingstreaktimes);
    	kshot:Print("Total amount of killingblows: " .. totalkillingstreak);
    end
    
    function kshot:ResetStreakInfo()
    	killingstreak = 0;
    	maxkillingstreak = 0;
    	totalkillingstreak = 0;
    	killingstreaktimes = 0;
    	kshot:ScrollText("Your streak info has been deleted", true);
    end
    
    function kshot:kshot_Killshot(killer, victim, spell, amount)
    
    	killingstreak = killingstreak + 1;
    	totalkillingstreak = totalkillingstreak + 1;
    
    	if(killingstreak == 1) then
    		killingstreaktimes = killingstreaktimes + 1;
    	end
    
    	if(killingstreak > maxkillingstreak) then
    		maxkillingstreak = killingstreak;
    		kshot:ScrollText("You have set a new record! ", true);
    	end
    
    	local message = "pwned " .. victim ..
    		(spell and amount and (" with " .. spell .. " (" .. amount .. " dmg)") or "") ..
    		"! Streak of " .. killingstreak .. "!";
    
    	if(emoteon == "yes") then
    		SendChatMessage(message, "EMOTE");
    	end
    
    	kshot:ScrollText(message, false);
    
    	SendAddonMessage("kshot_ScrollingTextEvent", message, kshot:GetMessageGroup());
    	SendAddonMessage("kshot_KillSoundEvent", killingstreak, kshot:GetMessageGroup());
    
    	kshot:kshot_SoundPack(kshot:GetKillshotSound(killingstreak));
    end
    
    function kshot:PlayerDeathHandler()
        if (not UnitIsPVP("Player")) then return; end;
        killingstreak = 0;
    end
    
    function kshot:GetKillshotSound(kills)
    	if (soundpackvar == 1) then
    		if (kills > 19) then return "sp1-14.wav"; end;
    		if (kills > 15) then return "sp1-13.wav"; end;
    		if (kills > 12) then return "sp1-12.wav"; end;
    		if (kills > 10) then return "sp1-11.wav"; end;
    		if (kills >  9) then return "sp1-10.wav"; end;
    		if (kills >  8) then return "sp1-9.wav"; end;
    		if (kills >  7) then return "sp1-8.wav"; end;
    		if (kills >  6) then return "sp1-7.wav"; end;
    		if (kills >  5) then return "sp1-6.wav"; end;
    		if (kills >  4) then return "sp1-5.wav"; end;
    		if (kills >  3) then return "sp1-4.wav"; end;
    		if (kills >  2) then return "sp1-3.wav"; end;
    		if (kills >  1) then return "sp1-2.wav"; end;
    		return "sp1-1.wav";
    	elseif (soundpackvar == 2) then
    		if (kills > 19) then return "sp2-14.wav"; end;
    		if (kills > 15) then return "sp2-13.wav"; end;
    		if (kills > 12) then return "sp2-12.wav"; end;
    		if (kills > 10) then return "sp2-11.wav"; end;
    		if (kills >  9) then return "sp2-10.wav"; end;
    		if (kills >  8) then return "sp2-9.wav"; end;
    		if (kills >  7) then return "sp2-8.wav"; end;
    		if (kills >  6) then return "sp2-7.wav"; end;
    		if (kills >  5) then return "sp2-6.wav"; end;
    		if (kills >  4) then return "sp2-5.wav"; end;
    		if (kills >  3) then return "sp2-4.wav"; end;
    		if (kills >  2) then return "sp2-3.wav"; end;
    		if (kills >  1) then return "sp2-2.wav"; end;
    		return "sp2-1.wav";
    	elseif (soundpackvar == 3) then
    		if (kills > 19) then return "sp3-14.wav"; end;
    		if (kills > 15) then return "sp3-13.wav"; end;
    		if (kills > 12) then return "sp3-12.wav"; end;
    		if (kills > 10) then return "sp3-11.wav"; end;
    		if (kills >  9) then return "sp3-10.wav"; end;
    		if (kills >  8) then return "sp3-9.wav"; end;
    		if (kills >  7) then return "sp3-8.wav"; end;
    		if (kills >  6) then return "sp3-7.wav"; end;
    		if (kills >  5) then return "sp3-6.wav"; end;
    		if (kills >  4) then return "sp3-5.wav"; end;
    		if (kills >  3) then return "sp3-4.wav"; end;
    		if (kills >  2) then return "sp3-3.wav"; end;
    		if (kills >  1) then return "sp3-2.wav"; end;
    		return "sp3-1.wav";
    	elseif (soundpackvar == 4) then
    		if (kills > 19) then return "sp4-14.mp3"; end;
    		if (kills > 15) then return "sp4-13.mp3"; end;
    		if (kills > 12) then return "sp4-12.mp3"; end;
    		if (kills > 10) then return "sp4-11.mp3"; end;
    		if (kills >  9) then return "sp4-10.mp3"; end;
    		if (kills >  8) then return "sp4-9.mp3"; end;
    		if (kills >  7) then return "sp4-8.mp3"; end;
    		if (kills >  6) then return "sp4-7.mp3"; end;
    		if (kills >  5) then return "sp4-6.mp3"; end;
    		if (kills >  4) then return "sp4-5.mp3"; end;
    		if (kills >  3) then return "sp4-4.mp3"; end;
    		if (kills >  2) then return "sp4-3.mp3"; end;
    		if (kills >  1) then return "sp4-2.mp3"; end;
    		return "sp4-1.mp3";
    	end
    end
    
    function kshot:ScrollText(msg, check)
    	if((texton=="yes") or (check == true))then
       		if (IsAddOnLoaded("Blizzard_CombatText")) then CombatText_AddMessage(msg, CombatText_StandardSCroll, 1, 0.1, 0.1, "crit", 0);        
       		elseif (IsAddOnLoaded("SCT")) then SCT:DisplayText(msg, {r=1.0, g=0.1, b=0.1}, 1, "event", 1, 1);
        	end
        	kshot:Print(msg);
    	end
    end
    
    function kshot:ResetOnZoneChange()
        if (resetonzonechangevar == "yes") then 
    		resetonzonechangevar = "no";
    		kshot:Print("Killshot streaks won't reset on zone change");
    	else 
    		resetonzonechangevar = "yes"; 
    		kshot:Print("Killshot streaks will reset on zone change");
    	end
    end
    
    function kshot:SoundChange()
        if (soundon == "yes") then 
    		soundon = "no";
    		kshot:Print("Sounds are now disabled");
    	else 
    		soundon = "yes"; 
    		kshot:Print("Sounds are now enabled");
    	end
    end
    
    function kshot:TextChange()
        if (texton == "yes") then 
    		texton = "no";
    		kshot:Print("Text is now disabled");
    	else 
    		texton = "yes"; 
    		kshot:Print("Text is now enabled");
    	end
    end
    
    function kshot:EmoteChange()
        if (emoteon == "yes") then 
    		emoteon = "no";
    		kshot:Print("The emote is now disabled");
    	else 
    		emoteon = "yes"; 
    		kshot:Print("The emote is now enabled");
    	end
    end
    
    function kshot:SoundPackChange()
        if (soundpackvar == 1) then 
    		soundpackvar = 2;
    		kshot:Print("Using soundpack [female] now. ");
    	elseif (soundpackvar == 2) then
    		soundpackvar = 3;
    		kshot:Print("Using soundpack [sexy] now. ");
    	elseif (soundpackvar == 3) then
    		soundpackvar = 4;
    		kshot:Print("Using soundpack [Healy, Ahn'Qiraj] now. ");
    	elseif (soundpackvar == 4) then
    		soundpackvar = 1;
    		kshot:Print("Using soundpack [normal] now. ");
    	end
    end
    
    function kshot:ResetKillshotStreak()
        killingstreak = 0;
    	kshot:Print("Your Killshot streak has been resetted.");
    end
    
    function kshot:kshot_SendVersionResponse(requester, targetGroup)
        SendAddonMessage("kshot_VersionCheckResponse", requester .. ":" .. UnitName("player") .. " is on version " .. version , targetGroup);
    end
    
    function kshot:CheckBGVersions()
        SendAddonMessage("kshot_BGVersionCheckRequest", UnitName("player"), "BATTLEGROUND");
        kshot:Print(UnitName("player") .. " is on version " .. version);
    end
    
    function kshot:CheckGuildVersions()
        SendAddonMessage("kshot_GuildVersionCheckRequest", UnitName("player"), "GUILD");
        kshot:Print(UnitName("player") .. " is on version " .. version);
    end
    
    function kshot:CheckRaidVersions()
        SendAddonMessage("kshot_RaidVersionCheckRequest", UnitName("player"), "RAID");
        kshot:Print(UnitName("player") .. " is on version " .. version);
    end
    
    function kshot:kshot_SoundPack(sound)
    	if(soundon == "yes") then
        	local soundfile = self.db.profile.soundpath .. sound;
       		kshot:SoundEventHandler(soundfile);
    	end
    end
    
    function kshot:getSoundPack()
        return self.db.profile.soundpack;
    end
    
    function kshot:GetMessageGroup()
        local targetGroup = "RAID";
        if (kshot:IsInBattleground() == true) then
            targetGroup = "BATTLEGROUND";
        end
        return targetGroup;
    end
    
    function kshot:IsInBattleground()
        local inBG = false;
        local zone = GetZoneText();
        if ((zone == "Warsong Gulch") or (zone == "Eye of the Storm") or (zone == "Arathi Basin") or (zone == "Alterac Valley") or (zone == "Halaa") or (zone == "Wintergrasp") or (zone == "Strand of the Ancients") or (zone == "Isle of Conquest")) then
            inBG = true;
        end
        return inBG;
    end
    
    function kshot:getMessage()
        return ksmsg;
    end
    
    function kshot:setMessage(newmsg)
        ksmsg = newmsg;
    end
    
    function kshot:ResetAll()
    	resetonzonechangevar = "yes";
    	soundpackvar = 1;
    	savevar = 1;
    	ksmsg = "pwned";
    	soundon = "yes";
    	texton = "yes";
    	emoteon = "yes";
    	killingstreak = 0;
    	maxkillingstreak = 0;
    	totalkillingstreak = 0;
    	killingstreaktimes = 0;
    	kshot:Print("Killshot detected a new user. "); 
    end
    Если звуки не нужны, поищи на форуме вариант от Спруди, он все лишнее убрал.

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

    "arcopaleno (04.08.2025),Shopenhauer (04.08.2025)

  10. #8
    Гуру Аватар для Shopenhauer
    Регистрация
    29.06.2023
    Адрес
    Ústí nad Labem
    Сообщений
    384
    Поблагодарил(а)
    22
    Получено благодарностей: 20 (сообщений: 19).
    Репутация: 20
    Цитата Сообщение от Penny Посмотреть сообщение
    Замени содержимое Killshot.lua
    Код:
    local version = "v1.16 (09-10-2010)";
    local killingstreak = 0;
    local lastKillSpell = nil;
    local lastKillDamage = nil;
    
    loaded = 0;
    
    local frame = CreateFrame("FRAME");
    frame:RegisterEvent("ADDON_LOADED");
    frame:RegisterEvent("PLAYER_LOGOUT");
    
    function frame:OnEvent(event)
        if (event == "ADDON_LOADED") then
            if (loaded == 0) then
                loaded = 1;
                if (savevar == 1) then
                    kshot:Print("Killshot preferences are loaded. "); 
                    if (soundpackvar == nil) then
                        soundpackvar =  1;
                        kshot:Print("Loaded soundpackvar = nil, changed it to [1]");
                    end
                    if (resetonzonechangevar == nil) then
                        resetonzonechangevar = "yes";
                        kshot:Print("Loaded resetonzonechangevar = nil, changed it to [yes]");
                    end
                    if (ksmsg == nil) then
                        ksmsg = "pwned";
                        kshot:Print("Loaded ksmsg = nil, changed it to [pwned]");
                    end
                    if (soundon == nil) then
                        soundon = "yes";
                        kshot:Print("Loaded soundon = nil, changed it to [yes]");
                    end
                    if (texton == nil) then
                        texton = "yes";
                        kshot:Print("Loaded texton = nil, changed it to [yes]");
                    end
                    if (emoteon == nil) then
                        emoteon = "yes";
                        kshot:Print("Loaded emoteon = nil, changed it to [yes]");
                    end
                    if (maxkillingstreak == nil) then
                        maxkillingstreak = 0;
                        kshot:Print("Loaded maxkillingstreak = nil, changed it to [0]");
                    end
                    if (totalkillingstreak == nil) then
                        totalkillingstreak = 0;
                        kshot:Print("Loaded totalkillingstreak = nil, changed it to [0]");
                    end
                    if (killingstreaktimes == nil) then
                        killingstreaktimes = 0;
                        kshot:Print("Loaded killingstreaktimes = nil, changed it to [0]");
                    end
                else
                    kshot:ResetAll();
                end
            end
        end
    end
    
    frame:SetScript("OnEvent", frame.OnEvent);
    
    local options = { 
        type='group',
        args = {
            reset = {
                type = 'execute',
                name = 'Reset Killshot streak',
                desc = 'Reset Killshot streak',
                func = "ResetKillshotStreak"
            },
            zone = {
                type = 'execute',
                name = 'Switch reset streak on zone change on/off',
                desc = 'Switch reset streak on zone change on/off',
                func = "ResetOnZoneChange"
            },
            soundpack = {
                type = 'execute',
                name = 'Switch between soundpacks',
                desc = 'Switch between soundpacks',
                func = "SoundPackChange"
            },
            checkguild = {
                type = 'execute',
                name = 'Check Guild versions',
                desc = 'Check Guild versions',
                func = "CheckGuildVersions"
            },
            checkbg = {
                type = 'execute',
                name = 'Check Battlegroup Versions',
                desc = 'Check BG Versions',
                func = "CheckBGVersions"
            },
            checkraid = {
                type = 'execute',
                name = 'Check Raid Versions',
                desc = 'Check Raid Versions',
                func = "CheckRaidVersions"
            },
            msg = {
                type = 'text',
                name = 'Killshot Message',
                desc = 'Killshot Message',
                usage = "<message>",
                get = "getMessage",
                set = "setMessage"
            },
            sound = {
                type = 'execute',
                name = 'Disable / Enable Sounds',
                desc = 'Disable / Enable Sounds',
                func = "SoundChange"
            },
            text = {
                type = 'execute',
                name = 'Disable / Enable Text',
                desc = 'Disable / Enable Text',
                func = "TextChange"
            },
            emote = {
                type = 'execute',
                name = 'Disable / Enable the Emote',
                desc = 'Disable / Enable the Emote',
                func = "EmoteChange"
            },
            resetall = {
                type = 'execute',
                name = 'Reset everything to the default',
                desc = 'Reset everything to the default',
                func = "ResetAll"
            },
            streak = {
                type = 'execute',
                name = 'Shows your current streak number',
                desc = 'Shows your current streak number',
                func = "EchoStreak"
            },
            streakmax = {
                type = 'execute',
                name = 'Shows your highest streak',
                desc = 'Shows your highest streak',
                func = "EchoMaxStreak"
            },
            streakavg = {
                type = 'execute',
                name = 'Shows your average streak',
                desc = 'Shows your average streak',
                func = "EchoAverageStreak"
            },
            streakdeleteall = {
                type = 'execute',
                name = 'Deletes all streak information (also your highest streak)',
                desc = 'Deletes all streak information (also your highest streak)',
                func = "ResetStreakInfo"
            }
        }
    };
    
    kshot = AceLibrary("AceAddon-2.0"):new("AceConsole-2.0", "AceEvent-2.0", "AceDB-2.0");
    kshot:RegisterChatCommand({"/ks"}, options);
    kshot:RegisterChatCommand({"/kshot"}, options);
    kshot:RegisterChatCommand({"/killshot"}, options);
    kshot:RegisterDB("kshotDB", "kshotDBPC");
    kshot:RegisterDefaults("profile", {
            soundpath = "Interface\\AddOns\\Killshot\\sounds\\"
        } 
    );
    
    function kshot:OnEnable()
        self:RegisterEvent("kshot_SoundEvent", "SoundEventHandler");
        self:RegisterEvent("PLAYER_DEAD", "PlayerDeathHandler");
        self:RegisterEvent("CHAT_MSG_ADDON", "AddonMessageHandler");
        self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED", "CombatLogEventHandler");
        self:RegisterEvent("ZONE_CHANGED_NEW_AREA", "ZoneChangedHandler");
    end
    
    function kshot:SoundEventHandler(sound)
        if not (PlaySoundFile(sound)) then
            self:ScheduleEvent("kshot_SoundEvent", 0.2, sound);
        end
    end
    
    function kshot:ZoneChangedHandler()
        if (resetonzonechangevar == "yes") then 
            kshot:Print("Killshot streaks reset on zone change. Typ /kshot zone to prevent this the next time."); 
            killingstreak = 0;
        end
    end
    
    function kshot:AddonMessageHandler(prefix, text, type, target)
        if not (target == UnitName("player")) then
            if (prefix == "kshot_txt") then
                kshot:Print(text);
            elseif (prefix == "kshot_ScrollingTextEvent") then
                kshot:ScrollText(text, false);
            elseif (prefix == "kshot_KillSoundEvent") then
                kshot:kshot_SoundPack(kshot:GetKillshotSound(tonumber(text)));
            elseif (prefix == "kshot_BGVersionCheckRequest") then
                kshot:kshot_SendVersionResponse(text, "BATTLEGROUND");
            elseif (prefix == "kshot_RaidVersionCheckRequest") then
                kshot:kshot_SendVersionResponse(text, "RAID");
            elseif (prefix == "kshot_GuildVersionCheckRequest") then
                kshot:kshot_SendVersionResponse(text, "GUILD");
            elseif (prefix == "kshot_VersionCheckResponse") then
                local nameLength = string.len(UnitName("player"));
                if (UnitName("player") == string.sub(text, 0, nameLength)) then
                    local startIndex = nameLength + 2;
                    kshot:Print(string.sub(text, startIndex));
                else
                    kshot:Print("didn't match: " .. text);
                end
            end
        end
    end
    
    function kshot:CombatLogEventHandler(timestamp, event, sourceGUID, sourceName, sourceFlags, destGUID, destName, destFlags, ...)
        if (not UnitIsPVP("Player")) then return; end;
        if (event == nil) then return; end;
    
        if event:find("_DAMAGE$") then
            if bit.band(destFlags or 0, COMBATLOG_OBJECT_TYPE_PLAYER) == COMBATLOG_OBJECT_TYPE_PLAYER and
               bit.band(sourceFlags or 0, COMBATLOG_OBJECT_AFFILIATION_MINE) == COMBATLOG_OBJECT_AFFILIATION_MINE then
    
                local spellId, spellName, _, amount, overkill = select(1, ...);
                if event == "SWING_DAMAGE" then
                    spellId = 6603; -- автоатака
                    spellName = "Melee";
                    _, _, _, amount, overkill = select(1, ...);
                end
    
                if overkill and overkill > 0 then
                    lastKillSpell = GetSpellLink(spellId) or spellName or "Unknown";
                    lastKillDamage = amount or 0;
                end
            end
        end
    
        if (event == "PARTY_KILL") then
            if (sourceFlags == nil) then return; end;
            if (destName == nil) then return; end;
            if (destFlags == nil) then return; end;
    
            if (bit.band(sourceFlags, COMBATLOG_OBJECT_AFFILIATION_MINE) == COMBATLOG_OBJECT_AFFILIATION_MINE) then
                if (bit.band(destFlags, COMBATLOG_OBJECT_TYPE_PLAYER) == COMBATLOG_OBJECT_TYPE_PLAYER) then
                    kshot:kshot_Killshot(UnitName("player"), destName, lastKillSpell, lastKillDamage);
                elseif (bit.band(destFlags, COMBATLOG_OBJECT_TYPE_PET) == COMBATLOG_OBJECT_TYPE_PET) then
                    if (bit.band(destFlags, COMBATLOG_OBJECT_CONTROL_PLAYER) == COMBATLOG_OBJECT_CONTROL_PLAYER and
                        not bit.band(destFlags, COMBATLOG_OBJECT_AFFILIATION_MINE) == COMBATLOG_OBJECT_AFFILIATION_MINE) then
                        kshot:kshot_Killshot(UnitName("player"), "an enemy pet, " .. destName, lastKillSpell, lastKillDamage);
                    end
                end
            end
        end
    end
    
    function kshot:EchoStreak()
        kshot:ScrollText("Your current streak is: " .. killingstreak, true);
    end
    
    function kshot:EchoMaxStreak()
        kshot:ScrollText("Your highest streak is: " .. maxkillingstreak, true);
    end
    
    function kshot:EchoAverageStreak()
        avg = totalkillingstreak/killingstreaktimes;
        if(totalkillingstreak == 0) then
            avg = 0;
        end
        kshot:ScrollText("Your average streak is: " .. avg, true);
        kshot:Print("Amount of killingstreaks: " .. killingstreaktimes);
        kshot:Print("Total amount of killingblows: " .. totalkillingstreak);
    end
    
    function kshot:ResetStreakInfo()
        killingstreak = 0;
        maxkillingstreak = 0;
        totalkillingstreak = 0;
        killingstreaktimes = 0;
        kshot:ScrollText("Your streak info has been deleted", true);
    end
    
    function kshot:kshot_Killshot(killer, victim, spell, amount)
    
        killingstreak = killingstreak + 1;
        totalkillingstreak = totalkillingstreak + 1;
    
        if(killingstreak == 1) then
            killingstreaktimes = killingstreaktimes + 1;
        end
    
        if(killingstreak > maxkillingstreak) then
            maxkillingstreak = killingstreak;
            kshot:ScrollText("You have set a new record! ", true);
        end
    
        local message = "pwned " .. victim ..
            (spell and amount and (" with " .. spell .. " (" .. amount .. " dmg)") or "") ..
            "! Streak of " .. killingstreak .. "!";
    
        if(emoteon == "yes") then
            SendChatMessage(message, "EMOTE");
        end
    
        kshot:ScrollText(message, false);
    
        SendAddonMessage("kshot_ScrollingTextEvent", message, kshot:GetMessageGroup());
        SendAddonMessage("kshot_KillSoundEvent", killingstreak, kshot:GetMessageGroup());
    
        kshot:kshot_SoundPack(kshot:GetKillshotSound(killingstreak));
    end
    
    function kshot:PlayerDeathHandler()
        if (not UnitIsPVP("Player")) then return; end;
        killingstreak = 0;
    end
    
    function kshot:GetKillshotSound(kills)
        if (soundpackvar == 1) then
            if (kills > 19) then return "sp1-14.wav"; end;
            if (kills > 15) then return "sp1-13.wav"; end;
            if (kills > 12) then return "sp1-12.wav"; end;
            if (kills > 10) then return "sp1-11.wav"; end;
            if (kills >  9) then return "sp1-10.wav"; end;
            if (kills >  8) then return "sp1-9.wav"; end;
            if (kills >  7) then return "sp1-8.wav"; end;
            if (kills >  6) then return "sp1-7.wav"; end;
            if (kills >  5) then return "sp1-6.wav"; end;
            if (kills >  4) then return "sp1-5.wav"; end;
            if (kills >  3) then return "sp1-4.wav"; end;
            if (kills >  2) then return "sp1-3.wav"; end;
            if (kills >  1) then return "sp1-2.wav"; end;
            return "sp1-1.wav";
        elseif (soundpackvar == 2) then
            if (kills > 19) then return "sp2-14.wav"; end;
            if (kills > 15) then return "sp2-13.wav"; end;
            if (kills > 12) then return "sp2-12.wav"; end;
            if (kills > 10) then return "sp2-11.wav"; end;
            if (kills >  9) then return "sp2-10.wav"; end;
            if (kills >  8) then return "sp2-9.wav"; end;
            if (kills >  7) then return "sp2-8.wav"; end;
            if (kills >  6) then return "sp2-7.wav"; end;
            if (kills >  5) then return "sp2-6.wav"; end;
            if (kills >  4) then return "sp2-5.wav"; end;
            if (kills >  3) then return "sp2-4.wav"; end;
            if (kills >  2) then return "sp2-3.wav"; end;
            if (kills >  1) then return "sp2-2.wav"; end;
            return "sp2-1.wav";
        elseif (soundpackvar == 3) then
            if (kills > 19) then return "sp3-14.wav"; end;
            if (kills > 15) then return "sp3-13.wav"; end;
            if (kills > 12) then return "sp3-12.wav"; end;
            if (kills > 10) then return "sp3-11.wav"; end;
            if (kills >  9) then return "sp3-10.wav"; end;
            if (kills >  8) then return "sp3-9.wav"; end;
            if (kills >  7) then return "sp3-8.wav"; end;
            if (kills >  6) then return "sp3-7.wav"; end;
            if (kills >  5) then return "sp3-6.wav"; end;
            if (kills >  4) then return "sp3-5.wav"; end;
            if (kills >  3) then return "sp3-4.wav"; end;
            if (kills >  2) then return "sp3-3.wav"; end;
            if (kills >  1) then return "sp3-2.wav"; end;
            return "sp3-1.wav";
        elseif (soundpackvar == 4) then
            if (kills > 19) then return "sp4-14.mp3"; end;
            if (kills > 15) then return "sp4-13.mp3"; end;
            if (kills > 12) then return "sp4-12.mp3"; end;
            if (kills > 10) then return "sp4-11.mp3"; end;
            if (kills >  9) then return "sp4-10.mp3"; end;
            if (kills >  8) then return "sp4-9.mp3"; end;
            if (kills >  7) then return "sp4-8.mp3"; end;
            if (kills >  6) then return "sp4-7.mp3"; end;
            if (kills >  5) then return "sp4-6.mp3"; end;
            if (kills >  4) then return "sp4-5.mp3"; end;
            if (kills >  3) then return "sp4-4.mp3"; end;
            if (kills >  2) then return "sp4-3.mp3"; end;
            if (kills >  1) then return "sp4-2.mp3"; end;
            return "sp4-1.mp3";
        end
    end
    
    function kshot:ScrollText(msg, check)
        if((texton=="yes") or (check == true))then
               if (IsAddOnLoaded("Blizzard_CombatText")) then CombatText_AddMessage(msg, CombatText_StandardSCroll, 1, 0.1, 0.1, "crit", 0);        
               elseif (IsAddOnLoaded("SCT")) then SCT:DisplayText(msg, {r=1.0, g=0.1, b=0.1}, 1, "event", 1, 1);
            end
            kshot:Print(msg);
        end
    end
    
    function kshot:ResetOnZoneChange()
        if (resetonzonechangevar == "yes") then 
            resetonzonechangevar = "no";
            kshot:Print("Killshot streaks won't reset on zone change");
        else 
            resetonzonechangevar = "yes"; 
            kshot:Print("Killshot streaks will reset on zone change");
        end
    end
    
    function kshot:SoundChange()
        if (soundon == "yes") then 
            soundon = "no";
            kshot:Print("Sounds are now disabled");
        else 
            soundon = "yes"; 
            kshot:Print("Sounds are now enabled");
        end
    end
    
    function kshot:TextChange()
        if (texton == "yes") then 
            texton = "no";
            kshot:Print("Text is now disabled");
        else 
            texton = "yes"; 
            kshot:Print("Text is now enabled");
        end
    end
    
    function kshot:EmoteChange()
        if (emoteon == "yes") then 
            emoteon = "no";
            kshot:Print("The emote is now disabled");
        else 
            emoteon = "yes"; 
            kshot:Print("The emote is now enabled");
        end
    end
    
    function kshot:SoundPackChange()
        if (soundpackvar == 1) then 
            soundpackvar = 2;
            kshot:Print("Using soundpack [female] now. ");
        elseif (soundpackvar == 2) then
            soundpackvar = 3;
            kshot:Print("Using soundpack [sexy] now. ");
        elseif (soundpackvar == 3) then
            soundpackvar = 4;
            kshot:Print("Using soundpack [Healy, Ahn'Qiraj] now. ");
        elseif (soundpackvar == 4) then
            soundpackvar = 1;
            kshot:Print("Using soundpack [normal] now. ");
        end
    end
    
    function kshot:ResetKillshotStreak()
        killingstreak = 0;
        kshot:Print("Your Killshot streak has been resetted.");
    end
    
    function kshot:kshot_SendVersionResponse(requester, targetGroup)
        SendAddonMessage("kshot_VersionCheckResponse", requester .. ":" .. UnitName("player") .. " is on version " .. version , targetGroup);
    end
    
    function kshot:CheckBGVersions()
        SendAddonMessage("kshot_BGVersionCheckRequest", UnitName("player"), "BATTLEGROUND");
        kshot:Print(UnitName("player") .. " is on version " .. version);
    end
    
    function kshot:CheckGuildVersions()
        SendAddonMessage("kshot_GuildVersionCheckRequest", UnitName("player"), "GUILD");
        kshot:Print(UnitName("player") .. " is on version " .. version);
    end
    
    function kshot:CheckRaidVersions()
        SendAddonMessage("kshot_RaidVersionCheckRequest", UnitName("player"), "RAID");
        kshot:Print(UnitName("player") .. " is on version " .. version);
    end
    
    function kshot:kshot_SoundPack(sound)
        if(soundon == "yes") then
            local soundfile = self.db.profile.soundpath .. sound;
               kshot:SoundEventHandler(soundfile);
        end
    end
    
    function kshot:getSoundPack()
        return self.db.profile.soundpack;
    end
    
    function kshot:GetMessageGroup()
        local targetGroup = "RAID";
        if (kshot:IsInBattleground() == true) then
            targetGroup = "BATTLEGROUND";
        end
        return targetGroup;
    end
    
    function kshot:IsInBattleground()
        local inBG = false;
        local zone = GetZoneText();
        if ((zone == "Warsong Gulch") or (zone == "Eye of the Storm") or (zone == "Arathi Basin") or (zone == "Alterac Valley") or (zone == "Halaa") or (zone == "Wintergrasp") or (zone == "Strand of the Ancients") or (zone == "Isle of Conquest")) then
            inBG = true;
        end
        return inBG;
    end
    
    function kshot:getMessage()
        return ksmsg;
    end
    
    function kshot:setMessage(newmsg)
        ksmsg = newmsg;
    end
    
    function kshot:ResetAll()
        resetonzonechangevar = "yes";
        soundpackvar = 1;
        savevar = 1;
        ksmsg = "pwned";
        soundon = "yes";
        texton = "yes";
        emoteon = "yes";
        killingstreak = 0;
        maxkillingstreak = 0;
        totalkillingstreak = 0;
        killingstreaktimes = 0;
        kshot:Print("Killshot detected a new user. "); 
    end
    Если звуки не нужны, поищи на форуме вариант от Спруди, он все лишнее убрал.
    Всё изучил, нашёл в какой строке меняется текст, затестил, всё очень круто работает))!
    Давно хотел себе такие настройки!


    Спасибо тебе большое, добрый человек!!!

  11. #9
    Game Master WotlK x1

    Game Master BFa x11

    Game Master SL x5 Аватар для Вечность


    Регистрация
    12.01.2021
    Сообщений
    32,028
    Поблагодарил(а)
    883
    Получено благодарностей: 1,362 (сообщений: 1,126).
    Репутация: 5629
    Закрыто.

Похожие темы

  1. Killshot
    от *HeRo* в разделе Аддоны
    Ответов: 3
    Последнее сообщение: 30.09.2024, 21:23
  2. dG Killshot
    от AkuZokuSan в разделе Аддоны
    Ответов: 0
    Последнее сообщение: 23.05.2014, 09:22
  3. Killshot
    от Audacity в разделе Корзина
    Ответов: 14
    Последнее сообщение: 15.07.2013, 11:08
  4. Помогите пожалуйста! Gd Killshot
    от PowerRangers в разделе Аддоны
    Ответов: 3
    Последнее сообщение: 27.12.2012, 05:02

Ваши права

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