Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Alguém poderia me ajudar nn sei ND sobre script quero criar um npc que eu inicie uma Quest e o players tenha que matar 7 bosses quando o player matar o Boss final o npc dá uma outft a ele e deixa ele passar pra sala das recompensas onde ele pegue x item no baú quem puder me ajudar agradeço muito 

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

Este tópico foi movido para a seção de Suporte Otserv.

 

 

 

 

 

                                                                                                                                                     tumblr_nwmv2z4VEM1ujiquxo1_100.gif.2db64bb36f0f565e68ff2a90cb98f439.gif.59f4c4cf234d2f6906621cac0553a862.gif

https://github.com/italoxxx1

 

Link para o post
Compartilhar em outros sites

Não sei se vai ser do seu gosto, segue:

NPC/crie um arquivo chamado james.xml ou como preferir e adicione:

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Heren, Primeira Missao" script="james.lua" access="3" lookdir="2" walkinterval="3000" floorchange="0">
    <mana now="800" max="800"/>
    <health now="132" max="200"/>
<look type="128" head="58" body="68" legs="109" feet="131" addons="1"/>
 <parameters>
  <parameter key="message_greet" value="Olá |PLAYERNAME|, preciso de {ajuda}, existem vermes que veêm de um lugar desconhecido e estão acabando com minhas plantações! "/>
  <parameter key="module_keywords" value="1" />
    </parameters></npc>

Agora em NPC/Script crie um arquivo chamado james.lua e adicione:

Spoiler

local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)


local talkState = {}
local quest = 76669
local reward = 70000
local stor = 4151


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)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(not npcHandler:isFocused(cid)) then
return false
elseif msgcontains(msg, "sim") and talkState[talkUser] == 1 then
npcHandler:say("Muito obrigado! Você será muito bem recompensado {ok}?", cid)
talkState[talkUser] = 2
elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then
npcHandler:say("Certo, entre nesse portal, seja cauteloso! Apresse-se!", cid)
setPlayerStorageValue(cid, quest, 2)
talkState[talkUser] = 0
elseif msgcontains(msg, "ajuda") then
local str = getPlayerStorageValue(cid, quest)
if(str < 2) then
npcHandler:say("Aventureiro, eu preciso que você limpe o lugar de onde esses vermes veêm! Elimine 20 rotworms para mim? {sim} ", cid) 
talkState[talkUser] = 1
return true
elseif(str == 2) then
npcHandler:say("Você iniciou missão, volte quando estiver completa.", cid)
elseif(str == 3) then
npcHandler:say("Muito obrigado por eliminar essas pragas! Aqui está sua recompensa.", cid)
setPlayerStorageValue(cid, stor, 1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recebeu uma Storage para ter acesso MUUUUUAAH.")
setPlayerStorageValue(cid, quest, 4)
elseif(str == 4) then
npcHandler:say("Você tem feito o suficiente para mim, Siga ao Norte e encontre Arkires, ele precisa de sua ajuda! ", cid)
end
talkState[talkUser] = 0
end
return TRUE
end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Agora em CreatureScript/Script/ crie um arquivo chamado count_quest e adicone:

Spoiler

local monsters = {--name = storage
["rotworm"] = 55004
}


function onKill(cid, target)
local monster = monsters[getCreatureName(target):lower()]
if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76669) == 2) then
if getPlayerStorageValue(cid, monster) < 20 then 
local killedMonsters = getPlayerStorageValue(cid, monster)
            if(killedMonsters == -1) then
                killedMonsters = 1
end
setPlayerStorageValue(cid, monster, killedMonsters + 1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você matou " .. killedMonsters .. " de 20 rotworms.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você concluiu a missão de eliminar os vermes!")
setPlayerStorageValue(cid, 76669, 3)
end
end
return TRUE
end

Agora em creatureScript.xml add:

<event type="kill" name="quest_count" script="count_quest.lua"/>

ainda em creaturescript/script/login.lua procure por  algum  
    registerCreatureEvent e embaixo adiciona:

   
    registerCreatureEvent(cid, "quest_count")

 

 

Ai você pode cria um local que o player vai poder ter acesso só quando falar com esse NPC terminando a missão, basta adicionar um local com uma porta e adicionar essa action id: 4151

depois adicione em Action/Script/Quests/ nomedaquest.lua:

Spoiler

function onUse(cid, item, frompos, item2, topos)

local storage = 4151 -- coloque o storage aqui


if getPlayerStorageValue(cid, storage) > 0 then
doTeleportThing(cid, topos)
doSendMagicEffect(topos, 10)
else
doPlayerSendTextMessage(cid, 22, "Você não possui o storage para entrar na porta!")
end

return TRUE
end

Por ultimo em Actions.xml add a tang:

    <action actionid="4151" event="script" value="quests/nomedaquest.lua"/>
 

Link para o post
Compartilhar em outros sites
1 hora atrás, Nysman disse:

Não sei se vai ser do seu gosto, segue:

NPC/crie um arquivo chamado james.xml ou como preferir e adicione:

  Mostrar conteúdo oculto

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Heren, Primeira Missao" script="james.lua" access="3" lookdir="2" walkinterval="3000" floorchange="0">
    <mana now="800" max="800"/>
    <health now="132" max="200"/>
<look type="128" head="58" body="68" legs="109" feet="131" addons="1"/>
 <parameters>
  <parameter key="message_greet" value="Olá |PLAYERNAME|, preciso de {ajuda}, existem vermes que veêm de um lugar desconhecido e estão acabando com minhas plantações! "/>
  <parameter key="module_keywords" value="1" />
    </parameters></npc>

Agora em NPC/Script crie um arquivo chamado james.lua e adicione:

  Mostrar conteúdo oculto

local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)


local talkState = {}
local quest = 76669
local reward = 70000
local stor = 4151


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)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(not npcHandler:isFocused(cid)) then
return false
elseif msgcontains(msg, "sim") and talkState[talkUser] == 1 then
npcHandler:say("Muito obrigado! Você será muito bem recompensado {ok}?", cid)
talkState[talkUser] = 2
elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then
npcHandler:say("Certo, entre nesse portal, seja cauteloso! Apresse-se!", cid)
setPlayerStorageValue(cid, quest, 2)
talkState[talkUser] = 0
elseif msgcontains(msg, "ajuda") then
local str = getPlayerStorageValue(cid, quest)
if(str < 2) then
npcHandler:say("Aventureiro, eu preciso que você limpe o lugar de onde esses vermes veêm! Elimine 20 rotworms para mim? {sim} ", cid) 
talkState[talkUser] = 1
return true
elseif(str == 2) then
npcHandler:say("Você iniciou missão, volte quando estiver completa.", cid)
elseif(str == 3) then
npcHandler:say("Muito obrigado por eliminar essas pragas! Aqui está sua recompensa.", cid)
setPlayerStorageValue(cid, stor, 1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recebeu uma Storage para ter acesso MUUUUUAAH.")
setPlayerStorageValue(cid, quest, 4)
elseif(str == 4) then
npcHandler:say("Você tem feito o suficiente para mim, Siga ao Norte e encontre Arkires, ele precisa de sua ajuda! ", cid)
end
talkState[talkUser] = 0
end
return TRUE
end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Agora em CreatureScript/Script/ crie um arquivo chamado count_quest e adicone:

  Mostrar conteúdo oculto

local monsters = {--name = storage
["rotworm"] = 55004
}


function onKill(cid, target)
local monster = monsters[getCreatureName(target):lower()]
if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76669) == 2) then
if getPlayerStorageValue(cid, monster) < 20 then 
local killedMonsters = getPlayerStorageValue(cid, monster)
            if(killedMonsters == -1) then
                killedMonsters = 1
end
setPlayerStorageValue(cid, monster, killedMonsters + 1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você matou " .. killedMonsters .. " de 20 rotworms.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você concluiu a missão de eliminar os vermes!")
setPlayerStorageValue(cid, 76669, 3)
end
end
return TRUE
end

Agora em creatureScript.xml add:

<event type="kill" name="quest_count" script="count_quest.lua"/>

ainda em creaturescript/script/login.lua procure por  algum  
    registerCreatureEvent e embaixo adiciona:

   
    registerCreatureEvent(cid, "quest_count")

 

 

Ai você pode cria um local que o player vai poder ter acesso só quando falar com esse NPC terminando a missão, basta adicionar um local com uma porta e adicionar essa action id: 4151

depois adicione em Action/Script/Quests/ nomedaquest.lua:

  Mostrar conteúdo oculto

function onUse(cid, item, frompos, item2, topos)

local storage = 4151 -- coloque o storage aqui


if getPlayerStorageValue(cid, storage) > 0 then
doTeleportThing(cid, topos)
doSendMagicEffect(topos, 10)
else
doPlayerSendTextMessage(cid, 22, "Você não possui o storage para entrar na porta!")
end

return TRUE
end

Por ultimo em Actions.xml add a tang:

    <action actionid="4151" event="script" value="quests/nomedaquest.lua"/>
 

Blz mano vou testar Aki e ver se dá bom

1 hora atrás, Nysman disse:

Não sei se vai ser do seu gosto, segue:

NPC/crie um arquivo chamado james.xml ou como preferir e adicione:

  Mostrar conteúdo oculto

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Heren, Primeira Missao" script="james.lua" access="3" lookdir="2" walkinterval="3000" floorchange="0">
    <mana now="800" max="800"/>
    <health now="132" max="200"/>
<look type="128" head="58" body="68" legs="109" feet="131" addons="1"/>
 <parameters>
  <parameter key="message_greet" value="Olá |PLAYERNAME|, preciso de {ajuda}, existem vermes que veêm de um lugar desconhecido e estão acabando com minhas plantações! "/>
  <parameter key="module_keywords" value="1" />
    </parameters></npc>

Agora em NPC/Script crie um arquivo chamado james.lua e adicione:

  Mostrar conteúdo oculto

local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)


local talkState = {}
local quest = 76669
local reward = 70000
local stor = 4151


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)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(not npcHandler:isFocused(cid)) then
return false
elseif msgcontains(msg, "sim") and talkState[talkUser] == 1 then
npcHandler:say("Muito obrigado! Você será muito bem recompensado {ok}?", cid)
talkState[talkUser] = 2
elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then
npcHandler:say("Certo, entre nesse portal, seja cauteloso! Apresse-se!", cid)
setPlayerStorageValue(cid, quest, 2)
talkState[talkUser] = 0
elseif msgcontains(msg, "ajuda") then
local str = getPlayerStorageValue(cid, quest)
if(str < 2) then
npcHandler:say("Aventureiro, eu preciso que você limpe o lugar de onde esses vermes veêm! Elimine 20 rotworms para mim? {sim} ", cid) 
talkState[talkUser] = 1
return true
elseif(str == 2) then
npcHandler:say("Você iniciou missão, volte quando estiver completa.", cid)
elseif(str == 3) then
npcHandler:say("Muito obrigado por eliminar essas pragas! Aqui está sua recompensa.", cid)
setPlayerStorageValue(cid, stor, 1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recebeu uma Storage para ter acesso MUUUUUAAH.")
setPlayerStorageValue(cid, quest, 4)
elseif(str == 4) then
npcHandler:say("Você tem feito o suficiente para mim, Siga ao Norte e encontre Arkires, ele precisa de sua ajuda! ", cid)
end
talkState[talkUser] = 0
end
return TRUE
end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Agora em CreatureScript/Script/ crie um arquivo chamado count_quest e adicone:

  Mostrar conteúdo oculto

local monsters = {--name = storage
["rotworm"] = 55004
}


function onKill(cid, target)
local monster = monsters[getCreatureName(target):lower()]
if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76669) == 2) then
if getPlayerStorageValue(cid, monster) < 20 then 
local killedMonsters = getPlayerStorageValue(cid, monster)
            if(killedMonsters == -1) then
                killedMonsters = 1
end
setPlayerStorageValue(cid, monster, killedMonsters + 1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você matou " .. killedMonsters .. " de 20 rotworms.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você concluiu a missão de eliminar os vermes!")
setPlayerStorageValue(cid, 76669, 3)
end
end
return TRUE
end

Agora em creatureScript.xml add:

<event type="kill" name="quest_count" script="count_quest.lua"/>

ainda em creaturescript/script/login.lua procure por  algum  
    registerCreatureEvent e embaixo adiciona:

   
    registerCreatureEvent(cid, "quest_count")

 

 

Ai você pode cria um local que o player vai poder ter acesso só quando falar com esse NPC terminando a missão, basta adicionar um local com uma porta e adicionar essa action id: 4151

depois adicione em Action/Script/Quests/ nomedaquest.lua:

  Mostrar conteúdo oculto

function onUse(cid, item, frompos, item2, topos)

local storage = 4151 -- coloque o storage aqui


if getPlayerStorageValue(cid, storage) > 0 then
doTeleportThing(cid, topos)
doSendMagicEffect(topos, 10)
else
doPlayerSendTextMessage(cid, 22, "Você não possui o storage para entrar na porta!")
end

return TRUE
end

Por ultimo em Actions.xml add a tang:

    <action actionid="4151" event="script" value="quests/nomedaquest.lua"/>
 

entao mano quase isso só que tem que ser um npc que de um outft no final e mata um boss de cada vez  tipo mata reporta ai ele da acesso ao tp do boss mata reporta são 5 e depois o boss final que é o sexto ai o cara passe pelo teleporte e ja era pega os itens no bau 

Editado por Fabricante
palavras erradas (veja o histórico de edições)
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 ambrozii0
      Gostaria de fazer um pedido de um NPC de Task progressiva,

      Ele iniciaria dando missões para level 8 para caçar Troll, Rotworm e Ghoul.
       
      No level 30 liberaria: Cyclops, Dragon e Wyrm... e assim em diante se puder deixar comentado eu faço as criaturas na sequencia dos leveis seguintes.
       
      O jogador pode fazer as tasks dos leveis anteriores mesmo que já tenha ultrapassado o level do próximo nível de task.
       
      E o jogador ao terminar a missão poderia escolher a recompensa em gold ou experiência. As tasks podem se repetir sem problema, mas apenas pode pegar uma de cada vez.
       
      Ao finalizar todas as tasks o jogador ganha uma montaria.
       
      Minha versão de cliente é 12.91
      Versão da Canary 2.6.1
      Não sei qual o TFS do meu servidor.
    • Por zGiovani
      Olá Galera, acabei de editar o npc para que funcione de maneira correta na nova versão v1.4.0
      do server: https://github.com/opentibiabr/otservbr-global/releases/download/stable-v1.4.0/otservbr.otbm
       
       
      Server/data/npc
       
      Imbuement Assistant.lua ?     "PADRÃO - SEM ITENS IMBUEMENT DE HOLY"
       
       
       
      Server/data/npc
      Imbuement Assistant.lua ?     "COM ITENS IMBUEMENT DE HOLY"
       
       
      EDITE TAMBÉM: imbuements.xml
      LOCALIZADO EM:      data/xml/imbuements.xml    edite ele  para funcionar os ITENS IMBUEMENT DE HOLY
      Editei ele na linha 99 a 118
       
       
       
      Valeu Galera! 
      Aproveitem esse ótimo conteúdo que vai poupar muito tempo de vocês, até a próxima!!! 
    • Por Gustavo0098
      Bom queria um NPC  teleportasse um player para uma position e so poderia ser usado novamente depois de 24 horas, alguem para ajudar? OBG 
    • Por zGiovani
      Olá amigos do Tibia King, venho com muito carinho compartilhar com vocês esse npc com a lista dos itens de imbuiment para compra. ?
       
      Simples mas acredito que vá ajudar algumas pessoas, fiz com base no script adicionado pelo Bruxo Ots, apenas deixei ele de forma mais simplificada,
      é só adicionar a algum NPC de sua preferência!
       
      Localizado em: "PASTA DO SEU SERVER"/data/npc     
       
      escolha um deles,  de um Ctrl +F  localize seu: <parameter key="shop_buyable" value="   Nome Item, ID , Preço; "/>     
       
      Substitua por:
       
       
    • Por Bruxo Ots
      Fala meus queridos, como sabem existem alguns ots que possuem um npc que compra tudo pra facilitar a vida da galera.
      Vou compartilhar com vcs aqui.
      Npc ja atualizado com os items 12.60
      Porem e compativel com meu otb quem usa vai dar boa que não usa e so mudar os id e so alegria.
      Creditos ao dega aqui e a equipe do HadesOt.
       
       
       
      Arquivo.
      Tibia King.xml
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo