Ir para conteúdo

Featured Replies

Postado

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)

Postado

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

 

 

 

 

 

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

https://github.com/italoxxx1

 

Postado

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"/>
 

Postado
  • Autor
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)

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

Informação Importante

Confirmação de Termo