Najpierw zróbmy sobie niezbędne zmienne - w górnym pasku klikamy na przycisku Variables a w otwartym oknie "Add Item". Jako nazwę wpisujemy 'zabici' a typ wartości (Value type) ustawiamy na table. Na koniec klikamy Save Item oraz Activate. Tak samo tworzymy drugą zmienną o nazwie 'zabiciTotal'.
Poniżej zamieszczam screen dla ułatwienia:
Kolejną rzeczą której potrzebujemy do trigger - po to aby nasz skrypt reagował na zabicie moga i odpowiednia zwiększał liczniki. Niestety, tu jest taki problem - nie byłem w stanie smusić triggera do działania z polskimi znakami. Zatem aby cały nasz licznik działał, musimy niestety przełączyć grę w tryb bez polskich znaków...
No dobrze, zatem potrzebny jest nam trigger. Po lewej stronie w menu mamy Trigger - przełączamy się tam i znów klikamy Add Item i wypełniamy pola tak jak na poniższym obrazku:
Dla ułatwienia wkleję jeszcze tekst triggera:
Kod: Zaznacz cały
^(Zabil(es|as) ([A-Za-z ]+))\.$
Kolejną rzaczą która jest tu potrzebna są komendy do obłsługi naszego licznika. Przełączamy się zatem na sekcje Aliases i znów, taką samą metodą jak poprzednio tworzymy trzy nowe komendy: 'reset', 'resetGlobal', 'zabici'.
Na samym końcu to co najważniejsze - skrypt. Przełączamy się na scripts i klikamy Add Item. Następnie w polu skryptu wklejamy to:
Kod: Zaznacz cały
-------------------------------------------------
-- Put your Lua functions here. --
-- --
-- Note that you can also use external Scripts --
-------------------------------------------------
function init()
if not initialized then
zabici = {}
zabiciTotal={}
loadVars();
initialized = true
end
end
function addKill(co)
if table.contains(zabici,co) then
zabici[co] = zabici[co]+1
else
zabici[co]=1
end
if table.contains(zabiciTotal,co) then
zabiciTotal[co] = zabiciTotal[co]+1
else
zabiciTotal[co]=1
end
saveVars()
end
function raport2()
local key;
local val;
local lacznie = 0;
local lacznieTeraz = 0;
echo("+-------------- Zabiles (lacznie): --------------+\n")
echo("| |\n")
local tablicaLaczna = {}
local n = 0
for k,v in pairs(zabici) do
n=n+1
tablicaLaczna[n]=k
end
for k,v in pairs(zabiciTotal) do
if not table.contains(tablicaLaczna,k) then
n=n+1
tablicaLaczna[n]=k
end
end
local tablicaSuma = {}
for kk in ipairs(tablicaLaczna) do
if table.contains(zabiciTotal,tablicaLaczna[kk]) then
tablicaSuma[tablicaLaczna[kk]] = zabiciTotal[tablicaLaczna[kk]]
end
if table.contains(zabici,tablicaLaczna[kk]) then
tablicaSuma[tablicaLaczna[kk]] = tablicaSuma[tablicaLaczna[kk]]
end
end
local lacznie = 0
local lacznieTeraz = 0
for key,val in pairs(tablicaSuma) do
local name = string.sub(key .. " ...............................", 0, 32)
local nb = tostring(tablicaSuma[key])
local terazStr = tostring(zabici[key])
if terazStr == "nil" then
terazStr = "0"
end
echo("| " .. name .. " " .. string.sub(terazStr .. "/" .. nb .. " ", 0, 12) .. " |\n")
lacznie = lacznie + tablicaSuma[key]
if table.contains(zabici,key) then
lacznieTeraz = lacznieTeraz + zabici[key]
end
end
echo("| |\n")
echo("| LACZNIE: ....................... " .. string.sub(tostring(lacznieTeraz) .. "/".. tostring(lacznie) .. " ", 0, 12) .. " |\n")
echo("+------------------------------------------------+\n")
end
function notifyKill()
local tab = {}
for i in string.gmatch(matches[4], "%S+") do
table.insert(tab,i)
end
addKill(tab[3])
end
function reset()
zabici = {}
end
function resetGlobal()
zabici = {}
zabiciTotal={}
saveVars()
end
init()
remember("zabiciTotal")
loadVars();
Następnie robimy restart Mudleta a po jego ponownym uruchomieniu możemy cieszyć się licznikiem zabitych wrogów.
Obsługa jest następująca:
- polecenie 'zabici' podaje stan licznika, pierwsza liczba to liczba zabitych stworzeń od ostatniego uruchomienia Mudleta, druga liczba to całkowita liczba zabitych stworzeń (oczywiście musimy coś najpierw zabić aby licznik pokazał jakiekolwiek liczby(
- polecenie "reset" zeruje licznik aktualnej sesji
- polecenie "resetGlobal" zeruje licznik całkowity
Miłej zabawy!