Ir para conteúdo
  • Cadastre-se

Posts Recomendados

3 NPC's com storage, onde o:

1º NPC vai executar uma missão de eliminar um boss, e dará ("quant x" de XP) e ("x" Item com uma action vinculada para o próximo NPC);

2º NPC só ira responder o player caso a missão do 1º NPC tenha sido totalmente concluída, caso a missão tenha sido finalizada, o 2º NPC irá exigir o ("x" ITEM) que o 1º NPC deu; Recompensa: Otfit exclusiva;

3º NPC só ira responder o player caso a missão do 1º NPC e do 2º NPC tenha sido concluído, caso sim, dará uma missão de executar 6 monstros diferentes, 300 de cada; Recompensa: (XP) e (ITEM).

 

OBS: Cada item deverá ter uma action ou storage vinculada com a missão. Não sei se é necessário.

 

Obrigado pela ajuda ;)

Editado por martimtiburcio (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

NPC1:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Npc um" script="NPC1.lua" walkinterval="2000" floorchange="0">
<health now="150" max="150"/>
<look type="139" head="132" body="79" legs="97" feet="132" corpse="2212"/>
<parameters>
<parameter key="message_greet" value="Olá, |PLAYERNAME|. Você quer me {ajudar}? Eu posso te recompensar..."/>
</parameters>
</npc>

 

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
if(msgcontains(msg, 'ajudar')) then
selfSay('Você pode me ajudar? Preciso que mate um {boss} para mim e assim eu lhe darei uma recompensa!', cid)
end

---------------------------------------------------------
if(msgcontains(msg, 'boss')) then
 
if (getPlayerStorageValue(cid,15001) == -1) then
selfSay('Mate o boss e eu irei te recompensar!', cid)
doTeleportThing(cid,{x=160, y=54, z=7})
 
elseif (getPlayerStorageValue(cid,15001) == 1) then
selfSay('Você já matou o boss!', cid)
 
end
return true
end

---------------------------------------------------------
if(msgcontains(msg, 'recompensa')) then
 
if (getPlayerStorageValue(cid,15001) == -1) then
selfSay('Você ainda não matou o boss!', cid)
 
elseif (getPlayerStorageValue(cid,15001) == 1) then
local itemr = doPlayerAddItem(cid, 4863, 1)
doSetItemActionId(itemr, 10213)
selfSay('Parabéns, aqui está sua recompensa!', cid)
 
end
return true
end
 
 
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Agora vai em creaturescripts/scripts, crie um arquivo com o nome de boss e adicione:

 

function onKill(cid, target, lastHit)

if(isMonster(cid)) and getCreatureName(cid) == "NOMEDOBOSS") then
setPlayerStorageValue(lastHit, 15001, 1)
doTeleportThing(lastHit,{x=POS DO NPC, y=POS DO NPC, z=POS DO NPC})
end
return true
end

 

Em creaturescripts.xml adicione a tag:

 

<event type="kill" name="BossKill" event="script" value="boss.lua"/> 

 

Em login.lua adicione:

 

registerCreatureEvent(cid, "BossKill")

 

 

NPC2:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Npc dois" script="NPC2.lua" walkinterval="2000" floorchange="0">
<health now="150" max="150"/>
<look type="139" head="132" body="79" legs="97" feet="132" corpse="2212"/>
<parameters>

<parameter key="message_greet" value="Olá, |PLAYERNAME|!"/>
</parameters>
</npc>

 

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 itemRemove = 105 -- Item que irár "perder"
local Outfits = { ["citizen"]={136} }


function Remove(cid) 
if doPlayerRemoveItem(cid,itemRemove, 1) then 
if(getPlayerSex(cid) == 0)then
doPlayerAddOutfit(cid, Outfits[param][1], 3)
selfSay("Parabéns, você ganhou um novo outfit!", cid)
talkState[talkUser] = 0
else
doPlayerPopupFYI(cid, "Você não pode receber o outfit, pois está faltando o item!")
return false
end
end
end

if getPlayerStorageValue(cid, 15001) == -1 then
selfSay("Fale com o outro NPC e volte depois!!")
talkState[talkUser] = 0
elseif (msgcontains(msg, 'mission')) then
selfSay("Você quer receber seu outfit?") 
talkState[talkUser] = 1
elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if Remove(cid) then
elseif msg == "no" and talkState[talkUser] >= 1 then
selfSay("Bye!", cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
end
return TRUE
end  
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

O NPC3 vou tentar fazer e posto aqui. Testa esses e me diz se funcionou.

Editado por PsyMcKenzie (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Bom dia, até então ocorreu tudo bem com exceção deste trecho:

 

Citar

[08/06/2017 09:36:02] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/boss.lua:3: 'then' expected near ')'
[08/06/2017 09:36:02] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/boss.lua)
[08/06/2017 09:36:02] data/creaturescripts/scripts/boss.lua:3: 'then' expected near ')'

 

O restante não acusou quando inicio o servidor, mas só posso testar o segundo NPC se o primeiro estiver totalmente ok.

Link para o post
Compartilhar em outros sites
function onKill(cid, target, lastHit)

if(isMonster(cid)) and (getCreatureName(cid) == "NOMEDOBOSS") then
setPlayerStorageValue(lastHit, 15001, 1)
doTeleportThing(lastHit,{x=POS DO NPC, y=POS DO NPC, z=POS DO NPC})
end
return true
end

Opa, faltou um "(" aqui, tenta agora.

Link para o post
Compartilhar em outros sites

Ótimo, o erro anterior foi reparado, a distro não o acusa mais, agora acontece o seguinte, eu pego a missão, sou teleportado, elimino o boss, mas na hora de entregar a missão o NPC não reconhece, ele simplesmente me oferece a missão novamente como se eu nem tivesse falado com ele.

:) valeu...

Link para o post
Compartilhar em outros sites

Tenta assim:

 

function onDeath(cid, corpse, deathList, target)
local storage = 15001
if getPlayerStorageValue(deathList[1], storage) < 1 then
	if isPlayer(deathList[1]) then
		setPlayerStorageValue(deathList[1], storage, 1) 
		doSendMagicEffect(getPlayerPosition(deathList[1]), 12)
	end
else
return true
end
return true
end

Adiciona isso no xml do mosntro depois de flags:

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

 

Não esquece de mudar no creaturescripts.xml o event type pra death.

Editado por PsyMcKenzie (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Bom dia mano, então, o 1º NPC está funcionando perfeitamente, a única observação a respeito dele é que o item da recompensa não está vindo com uma action ID, que seria usada para dar a continuidade ao processo da quest.

 

o 2º NPC está funcionando da seguinte maneira, se eu não concluí a quest do primeiro, ele fala comigo mas não libera a segunda Quest, até ai padrão, 

agora, eu tenho um char que já fez a primeira quest, ele fala comigo e pergunta se eu quero a minha outfit, se eu digo yes, ele pega o meu item sem actionID e diz pra mim que eu não posso receber minha outfit porque eu não tenho o item necessário.

 

Modificações:

o 1º NPC

- precisa me da um item que venha com uma actionID;

- Quando eu acabar de matar o boss, precisa da um Feed, um effects e uma mensagem que eu o matei;

- Quando eu entregar a missão ao 1º NPC ele também precisa me da um Feed, um effects e uma mensagem de parabéns;

 

o 2º NPC

- Depois que eu respondo Mission ele deixa de falar na área reservada para NPC e passa a falar na área padrão, ele tem que continuar falando na área de NPC;

- Ele só pode pegar o item se ele estiver com a actionID;

- Colocar Feed nas ações mais importantes, um effects e uma mensagem básica.

 

Bem meu camarada, eu acho que foram somente essas as minhas observações, e desde já te agradeço muito pela sua ajuda, abç :D

 

Link para o post
Compartilhar em outros sites

Usa assim:

 

local config = {
message = "Parabéns, você venceu o boss! O Teleport irá fechar em 1 minuto!",
timeToRemove = 60, -- segundos pra remover o tp
teleportId = 1387,
bosses = {
["NOME DO BOSS"] = { x = 1521, y = 1149, z = 7 }, --posição que será teleportado (no caso, pos do npc)

}
}

local function removal(position)
doRemoveThing(getTileItemById(position, config.teleportId).uid, 1)
return TRUE
end

function onDeath(cid, corpse, killer)
registerCreatureEvent(cid, "teleportmonster")
local position = getCreaturePosition(cid)

for name, pos in pairs(config.bosses) do
if name == getCreatureName(cid) then
teleport = doCreateTeleport(config.teleportId, pos, position)
doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1)
setPlayerStorageValue(cid, 15001)
addEvent(removal, config.timeToRemove * 1000, position)
doSendMagicEffect(position,10)
end
end
return TRUE
end

 

Cara, você configurou a action do item adicionado, no caso 10213 no actions.xml? Porque me parece normal, ainda mais se ele entregou o item!

<action actionid="10213" event="script" value="NOMEDOSCRIPT.lua"/>

 

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.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo