Olá gente, eu instalei esse sistema em meu OT.
Mas acontece que a parte da contagem de monstros não está funcionando, já o NPC está 100%.
Data / CreatureScripts / Scripts / tasksystem.lua:
local storages = {
name = 95672,
count = 95673,
maxcount = 95674,
}
local config = {
partycount = true, --- true ou false pra ativar/desativar que os kills dos membros da party contem pra voce
killdistance = 7 --- distancia que conta os kills
}
function onKill(cid, target, lastHit)
if isMonster(target) and getPlayerStorageValue(cid, storages.maxcount) > 3 and getCreatureMaster(target) == target and (not(isInParty(cid)) or config.partycount ~= true) then
if getCreatureName(target):lower() == string.lower(getPlayerStorageValue(cid, storages.name)) then
setPlayerStorageValue(cid, storages.count, getPlayerStorageValue(cid, storages.count) + 1)
if getPlayerStorageValue(cid, storages.count) == getPlayerStorageValue(cid, storages.maxcount) then
doPlayerSendTextMessage(cid, 19, "You finished your task.")
elseif getPlayerStorageValue(cid, storages.count) < getPlayerStorageValue(cid, storages.maxcount) then
doPlayerSendTextMessage(cid, 20, "Killed ".. getCreatureName(target) .."s [".. getPlayerStorageValue(cid, storages.count) .."/".. getPlayerStorageValue(cid, storages.maxcount) .."].")
end
end
elseif isMonster(target) and getCreatureMaster(target) == target and isInParty(cid) and config.partycount == true then
leader = getPartyLeader(cid)
party = getPartyMembers(leader)
for i = 1, #party do
pid = party[i]
if getDistanceBetween(getThingPos(target), getThingPos(pid)) < config.killdistance then
if getPlayerStorageValue(pid, storages.maxcount) > 3 then
if getCreatureName(target):lower() == string.lower(getPlayerStorageValue(pid, storages.name)) then
setPlayerStorageValue(pid, storages.count, getPlayerStorageValue(pid, storages.count) + 1)
if getPlayerStorageValue(pid, storages.count) == getPlayerStorageValue(pid, storages.maxcount) then
doPlayerSendTextMessage(pid, 19, "You finished your task.")
elseif getPlayerStorageValue(pid, storages.count) < getPlayerStorageValue(pid, storages.maxcount) then
doPlayerSendTextMessage(pid, 20, "Killed ".. getCreatureName(target) .."s [".. getPlayerStorageValue(pid, storages.count) .."/".. getPlayerStorageValue(pid, storages.maxcount) .."].")
end
end
end
end
end
end
return true
end
Data / CreatureScripts / Scripts / login.lua:
local config = {
loginMessage = getConfigValue('loginMessage'),
useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}
function onLogin(cid)
local a = 0
local limitAM = 20
if getCreatureName(cid):lower() == "account manager" then
for _, pid in ipairs(getPlayersOnline()) do
if getCreatureName(pid):lower() == "account manager" and pid ~= cid then
a = a + 1
end
end
if a >= limitAM then
return false
end
return true
end
if (getCreatureName(cid) == "Account Manager") then
return doRemoveCreature(cid, true)
end
local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
end
local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
doPlayerOpenChannel(cid, CHANNEL_HELP)
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
elseif(accountManager == MANAGER_NAMELOCK) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
elseif(accountManager == MANAGER_ACCOUNT) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
end
if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
end
registerCreatureEvent(cid, "Mail")
registerCreatureEvent(cid, "GuildMotd")
registerCreatureEvent(cid, "Arena") --NOVO--
registerCreatureEvent(cid, "FullHpMana") --NOVO--
registerCreatureEvent(cid, "ChangeOutfit") --NOVO--
registerCreatureEvent(cid, "Idle")
if(config.useFragHandler) then
registerCreatureEvent(cid, "SkullCheck")
end
registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, "AdvanceSave")
--------------- TASK SYSTEM -----------------
registerCreatureEvent(cid,"tasksystem")
if getPlayerStorageValue(cid, 95673) < 0 then
setPlayerStorageValue(cid, 95673, 0)
end
if getPlayerStorageValue(cid, 95674) < 0 then
setPlayerStorageValue(cid, 95674, 0)
end
---------------------------------------------
return true
end
Data / CreatureScripts / creaturescripts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<creaturescripts>
<event type="advance" name="VocReward" event="script" value="vocreward.lua"/> --NOVO--
<event type="preparedeath" name="Arena" event="script" value="arena.lua"/> --NOVO--
<event type="advance" name="FullHpMana" event="script" value="fullhpmana.lua"/> --NOVO--
<event type="login" name="ChangeOutfit" event="script" value="ChangeOutfit.lua"/> --NOVO--
<event type="kill" name="tasksystem" script="tasksystem.lua"/> --NOVO--
<event type="login" name="PlayerLogin" event="script" value="login.lua"/>
<event type="joinchannel" name="GuildMotd" event="script" value="guildmotd.lua"/>
<event type="receivemail" name="Mail" event="script" value="mail.lua"/>
<event type="reportbug" name="SaveReportBug" script="reportbug.lua"/>
<event type="advance" name="AdvanceSave" event="script" value="advancesave.lua"/>
<event type="think" name="Idle" event="script" value="idle.lua"/>
<event type="think" name="SkullCheck" event="script" value="skullcheck.lua"/>
</creaturescripts>
3 REP+ pra quem me ajudar, preciso muito de sistema no meu OT.