zapo
Member
- Joined
- Nov 10, 2020
- Messages
- 129
- Solutions
- 3
- Reaction score
- 11
Hi, i have some problem with my task scripts
if in a group the monsters are killed individually, it counts well, while when all monsters are killed, e.g. with avalanche that all monsters will die in one moment, one additional ...
my code:
if in a group the monsters are killed individually, it counts well, while when all monsters are killed, e.g. with avalanche that all monsters will die in one moment, one additional ...
my code:
Lua:
local function getKillers(creature, party)
local killers = {}
local timeNow = os.mtime()
local inFightTicks = configManager.getNumber(configKeys.PZ_LOCKED)
for uid, cb in pairs(creature:getDamageMap()) do
local attacker = Player(uid)
if (attacker and attacker ~= creature and timeNow - cb.ticks <= inFightTicks) then
if not has_value(killers, attacker) then
killers[#killers +1] = attacker
end
end
end
return killers
end
local task = CreatureEvent("task")
function task.onKill(player, target)
local monster = config[target:getName():lower()]
local killers = getKillers(target, player:getParty())
if target:isPlayer() or not monster or target:getMaster() then
return true
end
for k, member in pairs(killers) do
local stor = member:getStorageValue(monster.storage)+1
if stor < monster.amount and member:getStorageValue(monster.startstorage) >= monster.startvalue then
member:setStorageValue(monster.storage, stor)
member:sendTextMessage(MESSAGE_INFO_DESCR, 'Task message: '..(stor +1)..' of '..monster.amount..' '..target:getName()..'s killed.')
end
if (stor +1) == monster.amount then
member:sendTextMessage(MESSAGE_INFO_DESCR, 'Congratulations, you have killed '..(stor +1)..' '..target:getName()..'s and completed the '..target:getName()..'s mission.')
member:setStorageValue(monster.storage, stor +1)
end
end
return true
end