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

ta ae o npc ^^

 

dalila.xml

 

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

 

<npc name="Dalila" script="NpcMulti.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="Olá |PLAYERNAME|, você gostaria de fazer uma {missao}?"/>

 

</parameters>

 

</npc>

 

 

npc/scripts/NpcMulti.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 qntdade = 600

local stoTime = 96586

local stoKill = 96587

local premio = 100000 --em exp!

local msg = string.lower(msg)

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

 

 

if (msgcontains(msg, 'tarefa') 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)-qntdade)

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

selfSay("Você ainda não matou os "..qntdade.." multis, 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 as "..qntdade.." multis a tempo. Se você quiser, você pode tentar fazer denovo a missao.", cid)

setPlayerStorageValue(cid, stoTime, -1)

setPlayerStorageValue(cid, stoKill, -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 de 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 "..qntdade.." 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.", cid)

doPlayerAddExp(cid, premio) --premio

setPlayerStorageValue(cid, stoKill, -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("Você quer me ajudar a acabar com poderosas gosmas chamadas Multi?", cid)

talkState[talkUser] = 1

end

 

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

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

talkState[talkUser] = 2

 

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, qntdade)

local sto = getPlayerStorageValue(cid, stoTime)

selfSay("Você já pode começar a matar os multis, mas cuidado! É uma criatura muito forte. Volte aqui quando matar "..qntdade.." multis 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())

 

 

creaturescripts/scripts/TaskMulti.lua

 

function onDeath(cid, corpse, deathList)

 

local qntdade = 600

local stoTime = 96586

local stoKill = 96587

 

if getCreatureName(cid) == "Kadabra" 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

if getDamageMapPercent(pk, cid) >= 0.3 then -- o player tem q tirar pelo menos 30% da life do bixo para contar a task!

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

end

return true

end

 

 

vai no creaturescripts/scripts/login.lua e coloca isso la tb..

registerCreatureEvent(cid, "TaskMulti")

 

creaturescripts/craturescripts.xml

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

 

dai vai no .xml do Multi e coloca isso la no final do .xml antes do </monster>

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

 

qlqr duvida/bugs soh flar...

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

  • 0

olha funcionou tudo certinho mano so que não ta contando os monstros =( a e meu servidor é verção 9.53

 

olha meu multi ai

 

 

 

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

<monster name="multi" nameDescription="a multi" race="venom" experience="30600" speed="260" manacost="0">

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

<look type="238" corpse="6532"/>

<targetchange interval="4000" chance="10"/>

<strategy attack="100" defense="0"/>

<flags>

<flag summonable="0"/>

<flag attackable="1"/>

<flag hostile="1"/>

<flag illusionable="1"/>

<flag convinceable="0"/>

<flag pushable="0"/>

<flag canpushitems="1"/>

<flag canpushcreatures="1"/>

<flag targetdistance="1"/>

<flag staticattack="90"/>

<flag runonhealth="2000"/>

</flags>

<attacks>

<attack name="melee" interval="2500" min="-300" max="-600"/>

<attack name="poison" interval="3000" range="8" min="-200" max="-400">

</attack>

</attacks>

<defenses armor="15" defense="15">

<defense name="healing" interval="2500" chance="50" min="1000" max="2000">

<attribute key="areaEffect" value="blueshimmer"/>

</defense>

</defenses>

 

<immunities>

<immunity fire="1"/>

<immunity poison="1"/>

<immunity lifedrain="1"/>

<immunity paralyze="1"/>

<immunity outfit="1"/>

<immunity drunk="1"/>

<immunity invisible="1"/>

</immunities>

<summons maxSummons="50">

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

</summons>

<voices interval="3000" chance="10">

<voice sentence="Aquele e o verdadeiro."/>

</voices>

<loot>

<item id="2148" countmax="100" chance1="100000" chancemax="0"/> --Gold Coins

<item id="6549" chance="1000"/>

<item id="2152" countmax="20" chance1="100000" chancemax="0"/> --Platinum Coin

<item id="2152" countmax="10" chance1="100000" chancemax="0"/> --Platinum Coin

<item id="6500" countmax="1" chance1="2857" chancemax="0"/> --Demonic Essence

<item id="5944" chance="2500"/> --Soul Orb

 

</loot>

<script>

<event name="TaskMulti"/>

</script>

</monster>

 

 

 

 

creaturescripts

 

 

 

 

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

<creaturescripts>

<event type="login" name="PlayerLogin" event="script" value="login.lua"/>

 

<event type="channelrequest" name="Ban_Type" event="script" value="ban/type.lua"/>

<event type="channelrequest" name="Ban_Action" event="script" value="ban/action.lua"/>

<event type="textedit" name="Ban_Finish" event="script" value="ban/finish.lua"/>

 

<event type="channeljoin" name="GuildEvents" event="script" value="guild.lua"/>

<event type="mailreceive" name="Mail" event="script" value="mail.lua"/>

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

<event type="reportbug" name="SaveReportBug" script="reportbug.lua"/>

<event type="advance" name="AdvanceSave" event="script" value="advancesave.lua"/>

<event type="textedit" name="BanBook" event="script" value="banbook.lua"/>

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

 

<event type="think" name="Idle" event="script" value="idle.lua"/>

<event type="think" name="SkullCheck" event="script" value="skullcheck.lua"/>

<event type="login" name="FirstItems" event="script" value="firstitems.lua"/>

</creaturescripts>

 

 

 

Login

 

 

 

 

local config = {

loginMessage = getConfigValue('loginMessage'),

useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))

}

 

function onLogin(cid)

local loss = getConfigValue('deathLostPercent')

if(loss ~= nil) then

doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 15)

end

 

local accountManager = getPlayerAccountManager(cid)

if(accountManager == MANAGER_NONE) then

local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage

if(lastLogin > 0) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)

str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."

else

str = str .. " Please choose your outfit."

doPlayerSendOutfitWindow(cid)

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, "Idle")

if(config.useFragHandler) then

registerCreatureEvent(cid, "SkullCheck")

end

 

registerCreatureEvent(cid, "ReportBug")

registerCreatureEvent(cid, "AdvanceSave")

registerCreatureEvent(cid, "SlotLogin")

registerCreatureEvent(cid, "TaskMulti")

registerCreatureEvent(cid, "HealMsg")

registerCreatureEvent(cid, "ProtectLevel")

registerCreatureEvent(cid, "FirstItems")

return true

end

 

 

 

creaturescripts/scripts/TaskMulti.lua

nesse eu vi um erro seu e mudei com o servidor on eu dei reload não sei se foi por isso que não conto a task

 

 

if getCreatureName(cid) == "Kadabra" then

 

ai eu mudei pra

 

if getCreatureName(cid) == "Multi" then

 

 

 

 

 

 

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

if getDamageMapPercent(pk, cid) >= 0.3 then -- o player tem q tirar pelo menos 30% da life do bixo para contar a task!

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

end

return true

end

 

 

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

  • 0

tpw.. com creaturescript eh bom fechar o serv e abrir denovo pra dar reload... soh pra garantir..

e o 'erro' ali eh q tava testando o script no meu servidor... q alias tava contando a task e tudo certinhu.. ;x

 

-e alias o 'multi' no .xml do monstro ta minusculo e no creaturescript ta maiusculo.. tenta trocar isso tb... deixa os 2 minusculos ou os 2 maiusculos...

Link para o comentário
Compartilhar em outros sites

  • 0

ok irei testar aki

 

@ edit

 

mano reiniciei o servidor deixa o multi com M maiusculo e quando matei o multi deu esse erro aki ve a print ai

 

ielchw.png

 

 

@ edit

 

percebi mais uma coisa assim que eu mato o multi da esse erro a cima /\ e o multi some não cai o corpo dele e eu não ganho exp e nen aparece a mensagem do lot dele

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

  • 0

lol mais eu mudei olha aki

 



<?xml version="1.0" encoding="UTF-8"?>
<monster name="Multi" nameDescription="a Multi" race="venom" experience="30600" speed="260" manacost="0">
 <health now="6650" max="6650"/>
 <look type="238" corpse="6532"/>
 <targetchange interval="4000" chance="10"/>
 <strategy attack="100" defense="0"/>
 <flags>
   <flag summonable="0"/>
   <flag attackable="1"/>
   <flag hostile="1"/>
   <flag illusionable="1"/>
   <flag convinceable="0"/>
   <flag pushable="0"/>
   <flag canpushitems="1"/>
   <flag canpushcreatures="1"/>
   <flag targetdistance="1"/>
   <flag staticattack="90"/>
   <flag runonhealth="2000"/>
 </flags>
 <attacks>
   <attack name="melee" interval="2500" min="-300" max="-600"/>
   <attack name="poison" interval="3000" range="8" min="-200" max="-400">
   </attack>
   </attacks>
 <defenses armor="15" defense="15">
   <defense name="healing" interval="2500" chance="50" min="1000" max="2000">
     <attribute key="areaEffect" value="blueshimmer"/>
   </defense>
 </defenses>

 <immunities>
  <immunity fire="1"/>
   <immunity poison="1"/>
<immunity lifedrain="1"/>
   <immunity paralyze="1"/>
<immunity outfit="1"/>
<immunity drunk="1"/>
   <immunity invisible="1"/>
 </immunities>
 <summons maxSummons="50">
   <summon name="Multi" interval="2500" chance="10000"/>
 </summons>
 <voices interval="3000" chance="10">
   <voice sentence="Aquele e o verdadeiro."/>
 </voices>
 <loot>
  <item id="2148" countmax="100" chance1="100000" chancemax="0"/> --Gold Coins
  <item id="6549" chance="1000"/>
  <item id="2152" countmax="20" chance1="100000" chancemax="0"/> --Platinum Coin
  <item id="2152" countmax="10" chance1="100000" chancemax="0"/> --Platinum Coin
  <item id="6500" countmax="1" chance1="2857" chancemax="0"/> --Demonic Essence
  <item id="5944" chance="2500"/> --Soul Orb

 </loot>
<script>
<event name="TaskMulti"/>
</script>
</monster>

 

mano acho que o erro é nessa parte de getdamagepercent

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

 

Link para o comentário
Compartilhar em outros sites

  • 0

ae funciono tudo direito so que tem 1 bug agora

 

o monstro multi sumona outros multis teria como colocar alguma função pra a task não contar os clones =( porque olha so

 

 

22:41 Loot of a multi: a soul orb, 8 platinum coins, a platinum coin, 97 gold coins.

22:41 [Multi Task] (5/600)

22:41 [Multi Task] (6/600)

22:41 [Multi Task] (7/600)

22:41 [Multi Task] (8/600)

22:41 [Multi Task] (9/600)

22:41 [Multi Task] (10/600)

22:41 [Multi Task] (11/600)

 

matei so 1 multi =( e a task conto os clones =(

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

  • 0

ele sao summons da principal? se for.. tenta isso..

 

local function isSummon(cid)

if not isCreature(cid) then return false end

if isPlayer(getCreatureMaster(cid)) or isMonster(getCreatureMaster(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

Slicer comigo o script ta funcionando perfeitamente já até fiz a task pra outro monstro que não tem o problema da task contar os clones mais presiso da task pro multi tambem tente arrumar ai pra não contar os clones qualquer coisa o monstro multi ta ai pra cima já vou até te dar 1 rep aki depois que voce arrumar o bug pra não contar os summons dou outro REP vlw

Link para o comentário
Compartilhar em outros sites

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

×
×
  • Criar Novo...