Ir para conteúdo
  • Cadastre-se

BUG na Magnus Challenger (Task System)


Posts Recomendados

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.

Editado por Baltazar (veja o histórico de edições)

Dark Souls Bonfire GIF - Dark Souls Bonfire Rest - Discover & Share GIFs

Link para o post
Compartilhar em outros sites

irei te passar o sistema de task simples!!

 

Mods:

Task Kill.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Task Kill" version="1.0" author="Vodkart" contact="tibiaking.com" enabled="yes">
<config name="KillM_func"><![CDATA[
tsk = {
storages = {68754,68755},
task = {"dragon", 10}, -- nome do bixo e quantidade
exp = 200,
item = {2123,1}
}
]]></config>
<event type="login" name="AreKill" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "CountTask")
return true
end]]></event>
<event type="kill" name="CountTask" event="script"><![CDATA[
domodlib('KillM_func')
function onKill(cid, target)
if isMonster(target) then
local n = string.lower(getCreatureName(target))
if n == tsk.task[1] and getPlayerStorageValue(cid, tsk.storages[2]) >= 1 then
local contagem = getPlayerStorageValue(cid, tsk.storages[1])
if (contagem == -1) then contagem = 1 end
if not tonumber(contagem) then return true end
if contagem > tsk.task[2] then return true end
setPlayerStorageValue(cid, tsk.storages[1], contagem+1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == tsk.task[2] and "Congratulations! You finished the task of "..n.."." or "defeated. Total [" .. contagem .. "/" .. tsk.task[2] .. "] " .. n .. ".").."")
end
end
return true
end]]></event>
</mod>

npc:
 

domodlib('KillM_func')
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
local msg = string.lower(msg)
if isInArray({"task","mission","missao"}, msg) then
if not tonumber(getPlayerStorageValue(cid, tsk.storages[1])) then
npcHandler:say("Você já terminou a task!", cid)
elseif getPlayerStorageValue(cid, tsk.storages[2]) >= 1 then
npcHandler:say("Você já matou "..tsk.task[2].." "..tsk.task[1].."? {yes}", cid)
talkState[talkUser] = 2
else
npcHandler:say("Você deseja fazer uma missão de matar "..tsk.task[2].." "..tsk.task[1].." e receber "..tsk.exp.." de experience e "..tsk.item[2].." "..getItemNameById(tsk.item[1]).."? {yes}", cid)
talkState[talkUser] = 1
end
elseif isInArray({"yes","sim"}, msg) and talkState[talkUser] > 0 then
if talkState[talkUser] == 1 then
npcHandler:say("Parabéns! Agora você está participando da task, volte quanto tiver terminado!", cid)
setPlayerStorageValue(cid, tsk.storages[2], 1)
else
if getPlayerStorageValue(cid, tsk.storages[1]) >= tsk.task[2] then
npcHandler:say("Obrigado guerreiro, aqui está sua recompensa!", cid)
setPlayerStorageValue(cid, tsk.storages[1], "Finished")
doPlayerAddExp(cid, tsk.exp)
doPlayerAddItem(cid, tsk.item[1], tsk.item[2])
else
npcHandler:say("Você ainda não terminou a sua task!", cid)
end
end
talkState[talkUser] = 0
elseif msg == "no" then
selfSay("Tudo bem então", cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Lembrando que é o task comum,porque da zenia online é bem diferente...

você pode fazer um npc que troca items da task por um melhor...

                                                                         github.png TFS 0.4 DEV                                                                                                       nvzl0l.jpg
 
Página no facebook: https://www.facebook.com/Suporterking                                                                                     
Skype: fabinhodias01
 
 
"A almapermanece em suas criações" 


h3dhnuI.jpg           
(Dou suporte apenas em tópicos..)

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo