Ir para conteúdo

Featured Replies

Postado

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)

  • Respostas 8
  • Visualizações 433
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • PsyMcKenzie
    PsyMcKenzie

    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

Postado

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)

Postado
  • Autor

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.

Postado
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.

Postado
  • Autor

Ó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...

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo