Ir para conteúdo
  • 0

Pedido Task System Diferente


KennyConrad

Pergunta

Galera Queria Um Sistema De Task Exatamente Do Geito Que Postarei Abaixo.

 

.Npc Desse Geito.

 

Dalila: Olá Din Grey. Você quer me ajudar acabar com poderosas gosmas chamadas multi?

 

Dalila: Ótimo! Você precisa matar pelo menos 600 multis em um prazo de 1 semana para te dar recompensa. Aceita?

 

Dalila: Você já pode começar a matar os multis, mas cuidado! É uma criatura muito forte. Volte aqui quando matar 600 multis para ser recompensado. O prazo é até 25/08/2012 16:57:40.

 

Dalila: Você ainda não matou os 600 multis, atualmente você matou 0, resta 600. Seu prazo é de até 25/08/2012 16:57:40.

 

Dalila: Obrigado! você matou os 600 multis em menos de 1 semana.Aqui esta sua recompensa! Lembre-se que você pode fazer esta task quantas vezes quiser,desde que tenha concluído 1 semana contado a partir do dia de inicio.

 

Dalila: Parabéns! Você já concluiu esta task 4 vezes

.

 

Aparecer na tela pro player que está fazendo a task as mensagems em cor branca assim

 

[Multi Task] (1/600).

 

[Multi Task Finalizada] (600/600).

 

O Premio È Em Exp.

 

 

Ajudem Ae Vlw REP + Pra Quem AJudar.

Link para o comentário
Compartilhar em outros sites

  • Respostas 38
  • Created
  • Última resposta

Top Posters For This Question

Posts Recomendados

  • 0

achu q agora vai ^^

 

local function isSummon(cid)

if not isCreature(cid) then return false end

if getCreatureMaster(cid) ~= cid then

return true

end

return false

end

 

function onDeath(cid, corpse, deathList)

 

local qntdade = 600

local stoTime = 96586

local stoKill = 96587

 

if getCreatureName(cid) == "Multi" and isMonster(cid) and not isSummon(cid) then

for a = 1, #deathList do

local pk = deathList[a]

local left = math.ceil((getPlayerStorageValue(pk, stoTime) - os.time())/(24 * 60 * 60))

if left > 0 and getPlayerStorageValue(pk, stoKill) > 0 then

setPlayerStorageValue(pk, stoKill, getPlayerStorageValue(pk, stoKill) - 1)

local sto = getPlayerStorageValue(pk, stoKill)

local jaMatou = math.abs(getPlayerStorageValue(pk, stoKill)-qntdade)

 

if sto == 0 then

doPlayerSendTextMessage(pk, 22, "[Multi Task Finalizada] ("..qntdade.."/"..qntdade..")")

else

doPlayerSendTextMessage(pk, 22, "[Multi Task] ("..jaMatou.."/"..qntdade..")")

end

end

end

end

return true

end

 

Link para o comentário
Compartilhar em outros sites

  • 0

oia mano.. eu testei aki agora com um poke q summona outros e funcionou... se n funcionar ae no teu, dai achu q eh pq essa multi ae n summona as outras multis, ela soh 'invoca' elas.. entao eh meio 'impossivel' de fazer oq tu quer.. ;/

 

 

local function isSummon(cid)

if getCreatureMaster(cid) ~= cid then

return true

end

return false

end

 

function onDeath(cid, corpse, deathList)

 

local qntdade = 600

local stoTime = 96586

local stoKill = 96587

 

if getCreatureName(cid) == "Multi" and not isSummon(cid) then

for a = 1, #deathList do

local pk = deathList[a]

local left = math.ceil((getPlayerStorageValue(pk, stoTime) - os.time())/(24 * 60 * 60))

if left > 0 and getPlayerStorageValue(pk, stoKill) > 0 then

setPlayerStorageValue(pk, stoKill, getPlayerStorageValue(pk, stoKill) - 1)

local sto = getPlayerStorageValue(pk, stoKill)

local jaMatou = math.abs(getPlayerStorageValue(pk, stoKill)-qntdade)

 

if sto == 0 then

doPlayerSendTextMessage(pk, 20, "[Multi Task Finalizada] ("..qntdade.."/"..qntdade..")")

else

doPlayerSendTextMessage(pk, 20, "[Multi Task] ("..jaMatou.."/"..qntdade..")")

end

end

end

end

return true

end

 

Link para o comentário
Compartilhar em outros sites

  • 0

tenta esse aki.. creaturescript..

 

function onDeath(cid, corpse, deathList)

 

local qntdade = 600

local stoTime = 96586

local stoKill = 96587

 

if getCreatureName(cid) == "Multi" then

for a = 1, #deathList do

local pk = deathList[a]

local left = math.ceil((getPlayerStorageValue(pk, stoTime) - os.time())/(24 * 60 * 60))

if left > 0 and getPlayerStorageValue(pk, stoKill) > 0 then

setPlayerStorageValue(pk, stoKill, getPlayerStorageValue(pk, stoKill) - 1)

local sto = getPlayerStorageValue(pk, stoKill)

local jaMatou = math.abs(getPlayerStorageValue(pk, stoKill)-qntdade)

 

if sto == 0 then

doPlayerSendTextMessage(pk, 22, "[Multi Task Finalizada] ("..qntdade.."/"..qntdade..")")

else

doPlayerSendTextMessage(pk, 22, "[Multi Task] ("..jaMatou.."/"..qntdade..")")

end

end

end

end

return true

end

 

 

bom mano o script que funciono pra conta a task foi esse ai talvez voce editou o outro + aki no radbr quando foi implantado o sistema de task la eles tambem estavam com o mesmo bug estava contando os summons e la foi arrumado a uma coisa percebi aki que o multi feito pelo utevo res não é contado teria como editar o meu multi e arrumar um outro modo dele sumonar os summons para ageitar isso ou sl existe alguma solução ?

 

a mano tenhu mais 1 pedido pra voce teria como voce cria 1 npc que pode pegar varias task tipo tem esse npc aki que to querendo que nele pega as task dos dragons

 

é tipo assim olha

 


12:52 Arthas: Olá Sonick. Meu nome é Arthas, sou caçador de dragões.
12:52 Sonick [421]: dragoes
12:52 Arthas: Eu caço vários tipos, como dragon, dragon lord, hydra, frost dragon, dragon guardian, thunder dragon e demodras. Você quer me ajudar a caçar um deles? Qual?
12:52 Arthas: Ótimo! Você precisa matar pelo menos 1500 dragons em um prazo de 1 semana para te dar recompensa. Aceita?
12:53 Arthas: Você já pode começar a matar dragons. Volte aqui quando matar 1500 dragons para ser recompensado. O prazo é até 30/10/2012 12:53:19.
12:54 Arthas: Ótimo! Você precisa matar pelo menos 1800 dragons lord em um prazo de 1 semana para te dar recompensa. Aceita?
12:54 Arthas: Você já pode começar a matar dragons lord. Volte aqui quando matar 1800 dragons lord para ser recompensado. O prazo é até 30/10/2012 12:54:22.
12:54 Arthas: Ótimo! Você precisa matar pelo menos 720 hydras em um prazo de 1 semana para te dar recompensa. Aceita?
12:54 Arthas: Você já pode começar a matar hydras. Volte aqui quando matar 720 hydras para ser recompensado. O prazo é até 30/10/2012 12:54:22.
12:54 Arthas: Ótimo! Você precisa matar pelo menos 600 frost dragons em um prazo de 1 semana para te dar recompensa. Aceita?
12:54 Arthas: Você já pode começar a matar frost dragons. Volte aqui quando matar 600 frost dragons lord para ser recompensado. O prazo é até 30/10/2012 12:54:22.
12:57 Arthas: Ótimo! Você precisa matar pelo menos 1000 dragon guardians em um prazo de 1 semana para te dar recompensa. Aceita?
12:58 Arthas: Você já pode começar a matar dragon guardians. Volte aqui quando matar 1000 dragon guardians para ser recompensado. O prazo é até 30/10/2012 12:58:08.
12:58 Arthas: Ótimo! Você precisa matar pelo menos 1200 thunder dragons em um prazo de 1 semana para te dar recompensa. Aceita?
12:58 Arthas: Você já pode começar a matar thunder dragons. Volte aqui quando matar 1200 thunder dragons para ser recompensado. O prazo é até 30/10/2012 12:58:50.
12:59 Arthas: Seu tempo expirou, você tinha até 10/05/2012 20:16:13 para matar 600 demodras. Quer tentar novamente?
12:59 Arthas: Você já pode começar a matar demodras. Volte aqui quando matar 600 demodras para ser recompensado. O prazo é até 30/10/2012 12:59:21.

 

se puder me ajudar com esse npc tambem ^^ vlw

Editado por KennyxD
Link para o comentário
Compartilhar em outros sites

  • 0

oia mano pelo q tava vendo.. isso aki.. \/ .. deve simplismente criar mais Multis e n deixar a original como Master... por isso o script n ta funcionando...

<summons maxSummons="50">     
<summon name="Multi" interval="2500" chance="10000"/>   
</summons>

 

oq podes fazer eh... criar um spell q summone as multis e faça a principal ser a Master delas... dai tirar essa parte ali de cima e soh deixar a spell de summonar..

 

sobre o outro npc.. amanha vejo oq posso fazer...

Link para o comentário
Compartilhar em outros sites

  • 0

eu tive pensando em outra coisa e se eu criar um outro multi com outro nome dai o multi verdadeiro criar os mult seria nomes diferentes será que daria certo ? eu vou testar aki e te falo ^^

@ edit ae deu certo rsrs eu criei outro monstro igual o multi porem com o nome de mult e dentro do script o nome Multi mesmo porem pra sumonar ele tem que ser pelo nome mult com T mudo rsrs agora não conta mais os clones hehe =) manin me ajuda com esse outro npc pf rsrs ^^ vlw mesmo por tar me ajudando

Editado por KennyxD
Link para o comentário
Compartilhar em outros sites

  • 0

kkkk bela ideia mano, nem ia pensar nisso ^^

 

ta ae o novo sistema...

1* creaturescripts/scripts/DragonsTask.lua

 

local function isSummon(cid)

if getCreatureMaster(cid) ~= cid then

return true

end

return false

end

 

function onDeath(cid, corpse, deathList)

 

local stoTime = 96588

local stoKill = 96589

local stoName = 96590

local task = {

["dragon"] = {kill = "Dragon", qnt = 1500, exp = 1000000},

["dragon lord"] = {kill = "Dragon Lord", qnt = 1000, exp = 800000},

["hydra"] = {kill = "Hydra", qnt = 800, exp = 700000},

["frost dragon"] = {kill = "Frost Dragon", qnt = 600, exp = 500000},

["dragon guardian"] = {kill = "Dragon Guardian", qnt = 500, exp = 400000},

["thunder dragon"] = {kill = "Thunder Dragon", qnt = 400, exp = 300000},

["demodras"] = {kill = "Demodras", qnt = 300, exp = 200000},

}

 

for a = 1, #deathList do

local pk = deathList[a]

local myTask = task[string.lower(getPlayerStorageValue(pk, stoName))]

local left = math.ceil((getPlayerStorageValue(pk, stoTime) - os.time())/(24 * 60 * 60))

 

if myTask and getCreatureName(cid) == getPlayerStorageValue(pk, stoName) and not isSummon(cid) then

if left > 0 and getPlayerStorageValue(pk, stoKill) > 0 then

setPlayerStorageValue(pk, stoKill, getPlayerStorageValue(pk, stoKill) - 1)

local sto = getPlayerStorageValue(pk, stoKill)

local jaMatou = math.abs(getPlayerStorageValue(pk, stoKill)-myTask.qnt)

 

if sto == 0 then

doPlayerSendTextMessage(pk, 20, "["..myTask.kill.." Task Finalizada] ("..myTask.qnt.."/"..myTask.qnt..")")

else

doPlayerSendTextMessage(pk, 20, "["..myTask.kill.." Task] ("..jaMatou.."/"..myTask.qnt..")")

end

end

end

end

return true

end

 

 

creaturescripts/scripts/login.lua

registerCreatureEvent(cid, "DragonsTask")

 

creaturescripts/creaturescripts.xml

<event type="death" name="DragonsTask" event="script" value="DragonsTask.lua"/>

 

monster/ em todos os dragoes da quest...

<script>
<event name="DragonsTask"/>
</script>

 

npc/scripts/NpcDragonsTask.lua

 

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 stoTime = 96588

local stoKill = 96589

local stoName = 96590

----

local msg = string.lower(msg)

local left = math.ceil((getPlayerStorageValue(cid, stoTime) - os.time())/(24 * 60 * 60)) --nao mexe!

local task = {

["dragon"] = {kill = "Dragon", qnt = 1500, exp = 1000000},

["dragon lord"] = {kill = "Dragon Lord", qnt = 1000, exp = 800000},

["hydra"] = {kill = "Hydra", qnt = 800, exp = 700000},

["frost dragon"] = {kill = "Frost Dragon", qnt = 600, exp = 500000},

["dragon guardian"] = {kill = "Dragon Guardian", qnt = 500, exp = 400000},

["thunder dragon"] = {kill = "Thunder Dragon", qnt = 400, exp = 300000},

["demodras"] = {kill = "Demodras", qnt = 300, exp = 200000},

}

local myTask = task[string.lower(getPlayerStorageValue(cid, stoName))] or {}

 

 

if (msgcontains(msg, 'dragoes') or msgcontains(msg, 'missao')) then

if getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) > 0 then

local faltaMatar = getPlayerStorageValue(cid, stoKill)

local jaMatou = math.abs(getPlayerStorageValue(cid, stoKill)-myTask.qnt)

local prazo = os.date("%d/%m/%y %X", getPlayerStorageValue(cid, stoTime))

selfSay("Você ainda não matou os "..myTask.qnt.." "..myTask.kill..", atualmente você matou ".. (jaMatou)..", resta "..faltaMatar..". Seu prazo é de até "..prazo..".", cid)

talkState[talkUser] = 0

return true

elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left <= 0 and getPlayerStorageValue(cid, stoKill) ~= -1 then

selfSay("Infelismente você não matou os "..myTask.qnt.." "..myTask.kill.." a tempo. Se você quiser, você pode tentar fazer denovo a missao.", cid)

setPlayerStorageValue(cid, stoTime, -1)

setPlayerStorageValue(cid, stoKill, -1)

setPlayerStorageValue(cid, stoName, -1)

talkState[talkUser] = 0

return true

elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) == -1 then

local prazo = os.date("%d/%m/%y %X", getPlayerStorageValue(cid, stoTime))

selfSay("Você tem que esperar pelo menos 1 semana para poder pegar essa tarefa denovo. O prazo acaba dia ".. prazo..".", cid)

talkState[talkUser] = 0

return true

elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) == 0 then

selfSay("Obrigado! você matou os "..myTask.qnt.." "..myTask.kill.." em menos de 1 semana. Aqui esta sua recompensa! Lembre-se que você pode fazer esta task quantas vezes quiser,desde que tenha concluído 1 semana contado a partir do dia de inicio.", cid)

doPlayerAddExp(cid, myTask.exp) --premio

setPlayerStorageValue(cid, stoKill, -1)

setPlayerStorageValue(cid, stoName, -1)

talkState[talkUser] = 0

return true

else

if getPlayerStorageValue(cid, stoTime) ~= -1 and getPlayerStorageValue(cid, stoKill) == -1 then

setPlayerStorageValue(cid, stoTime, -1) --soh pra evitar problemas...

end

selfSay("Eu caço vários tipos, como dragon, dragon lord, hydra, frost dragon, dragon guardian, thunder dragon e demodras. Você quer me ajudar a caçar um deles? Qual?", cid)

talkState[talkUser] = 1

end

 

elseif task[msg] and talkState[talkUser] == 1 then

setPlayerStorageValue(cid, stoName, task[msg].kill)

myTask = task[string.lower(getPlayerStorageValue(cid, stoName))]

selfSay("Ótimo! Você precisa matar pelo menos "..myTask.qnt.." "..myTask.kill.." em um prazo de 1 semana para te dar recompensa. Aceita?", cid)

talkState[talkUser] = 2

 

elseif (msgcontains(msg, 'no') or msgcontains(msg, 'nao')) and talkState[talkUser] == 2 then

selfSay("Ok então, fale comigo denovo quando você quiser me ajudar a matar esses malditos dragões!", cid)

talkState[talkUser] = 0

 

elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 2 then

local semana = 7 * 24 * 60 * 60

setPlayerStorageValue(cid, stoTime, os.time()+semana)

setPlayerStorageValue(cid, stoKill, myTask.qnt)

setPlayerStorageValue(cid, stoName, myTask.kill)

local sto = getPlayerStorageValue(cid, stoTime)

selfSay("Você já pode começar a matar os ".. (myTask.kill) ..", mas cuidado! É uma criatura muito forte. Volte aqui quando matar ".. (myTask.qnt) .." ".. (myTask.kill) .." para ser recompensado. O prazo é até ".. os.date("%d/%m/%y %X", sto) ..".", cid)

 

end

 

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

npc/Arthas.xml

 

<?xml version="1.0" encoding="UTF-8"?>

 

<npc name="Arthas" script="NpcDragonsTask.lua" walkinterval="350000" floorchange="0" speed="0" lookdir="2">

 

<health now="150" max="150"/>

 

<look type="640" head="91" body="114" legs="86" feet="0"/>

 

<parameters>

 

<parameter key="message_greet" value="Ola |PLAYERNAME|. Meu nome é Arthas, sou caçador de {dragoes}."/>

 

</parameters>

 

</npc>

 

 

se funcionar, e n tiver mais duvidas, n esqueça de reportar para moverem o topico ^^

Link para o comentário
Compartilhar em outros sites

  • 0

vo testar aki e jaja te falo

 

 

@ edit

 

mano n ta contando a task e tem outra coisa quando vai fazer a task so ta dando pra pegar 1 task por semana era pra poder pegar todas elas exemplo se eu quiser pegar todas as task dragon,dragon,lord etc eu poderia porem dps de terminha exemplo a de dragon so dps de 1 semana que eu posso fazer a de dragons denovo más se eu não tive feito a de dragon guardian eu posso fazer ou seja cada task teria o seu devido prazo pra fazer separadamente.

 

@ edit pra pode pegar todas as task se quiser acho que voce vai ter que colocar pra cada task ter uma storage propria exemplo o dragon ter a sua storage e a do dragon lord outra e pah dai não haveria problema se o player quise-se fazer varias task

Editado por KennyxD
Link para o comentário
Compartilhar em outros sites

  • 0

vo testar aki e jaja te falo

 

 

@ edit

 

mano n ta contando a task e tem outra coisa quando vai fazer a task so ta dando pra pegar 1 task por semana era pra poder pegar todas elas exemplo se eu quiser pegar todas as task dragon,dragon,lord etc eu poderia porem dps de terminha exemplo a de dragon so dps de 1 semana que eu posso fazer a de dragons denovo más se eu não tive feito a de dragon guardian eu posso fazer ou seja cada task teria o seu devido prazo pra fazer separadamente.

 

@ edit pra pode pegar todas as task se quiser acho que voce vai ter que colocar pra cada task ter uma storage propria exemplo o dragon ter a sua storage e a do dragon lord outra e pah dai não haveria problema se o player quise-se fazer varias task

 

estive pensando em se voce colocar uma creaturescripts pra cada tipo de dragon da task e coloca-se pro npc checar a cada task o seu devido creaturescripts exemplo teria varios creaturescripts separadamente o de dragon o outro de dragon lord etc porem pude-se pegar todas elas no mesmo npc e como dito acima cada task teria que ter a sua devida storage para os players que quiserem fazer mais de uma task poder fazer.

 

a e pra facilitar pra voce se voce fizer do geito que falei cada task com seu creaturescripts da so 1 exemplo de uma o resto eu crio aki e mudo as storages de acordo com oque voce pos no npc ^^

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui também não está funcionando. A task não está contando e não da nenhum erro em nada. NPC me entrega a task normalmente, me da o prazo de 7 dias, mas quando vou matar os bixos não conta.

Link para o comentário
Compartilhar em outros sites

  • 0

O npc não funcionou aqui ;s

 

aqui não tá aparecendo o npc olha só.

 

 

 

[10/11/2012 15:44:03] [Warning - Npc::loadFromXml] Cannot load npc file (data/npc/dalila.xml).

[10/11/2012 15:44:03] Line: 6, Info: Input is not proper UTF-8, indicate encoding !

[10/11/2012 15:44:03] Bytes: 0xE9 0x20 0x41 0x72

Link para o comentário
Compartilhar em outros sites

  • 0

O npc não funcionou aqui ;s

 

aqui não tá aparecendo o npc olha só.

 

 

 

[10/11/2012 15:44:03] [Warning - Npc::loadFromXml] Cannot load npc file (data/npc/dalila.xml).

[10/11/2012 15:44:03] Line: 6, Info: Input is not proper UTF-8, indicate encoding !

[10/11/2012 15:44:03] Bytes: 0xE9 0x20 0x41 0x72

 

Procure essa linha:

<?xml version="1.0" encoding="UTF-8"?>

 

E substitua por essa:

<?xml version="1.0" encoding="ISO-8859-1"?>

 

Ps: é a primeira linha de todo o script.

 

@Topic

Slicer, pode ajudar-nos com o término do script, ou corrigir os erros?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.

×
×
  • Criar Novo...