Ir para conteúdo
  • 0

Script Npc E Bau Que Usa Um Item Nele


cacaiu

Pergunta

queria sabe se vcs podem min fazer 2 scripts assim EX:

 

um player fala Hi pro npc, ai o npc diz um msg, dps disso o player dis YES. Ai o player vai ganhar uma chave e com essa chave ele vai ter que ir em um bau e usa a chave la, e quando ele usa a chave no bau a chave vai ser removida da bp dele e ele vai ganha um item q estava dentro do bau.

 

valendo 2 rep por 2 dias

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Script do NPC:

 

nomedonpc.xml:

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="NPC" script="data/npc/scripts/chave.lua" walkinterval="0" floorchange="0">
<health now="100" max="100"/>
<look type="144" head="115" body="94" legs="114" feet="114" addons="3"/>
 <parameters>
<parameter key="message_greet" value="|PLAYERNAME|, deseja obter a chave para a quest?" />
 </parameters>
</npc>

 

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

if msgcontains(msg, 'yes') then

selfSay('Aqui está a chave.', cid)

item = doPlayerAddItem(cid, 2088, 1)

doItemSetAttribute(item, "uid", "1509")

talkState[talkUser] = 0

end

return TRUE

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

Script do baú:

 

actions.xml:

 

<action uniqueid="1509" script="keychest.lua"/>
<action uniqueid="1510" script="keychest.lua"/>

 

keychest.lua:

 

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

local reward = 2160 -- ID do item de recompensa

local count = 1 -- Quantia

 

if item.uid == 1509 and item2.uid == 1510 then

queststatus = getPlayerStorageValue(cid,5191)

if queststatus == -1 then

doPlayerSendTextMessage(cid,19,"Sua chave foi usada e você obteve "..getItemNameById(reward)..".")

doPlayerRemoveItem(cid, item.uid, 1)

doPlayerAddItem(cid, reward, count)

setPlayerStorageValue(cid, 5191, 1)

else

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você não pode fazer a mesma quest duas vezes.")

end

else

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "O baú está trancado.")

end

return true

end

 

 

OBS: O baú deve ter o unique ID 1510.

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

  • 0

No script da chave:

 

Substitui isso:

 

if item.uid == 1509 and item2.uid == 1510 then

Por isso:

 

if item.uid == 1510 and item2.uid == 1510 then

No do NPC:

 

Isso:

 

doItemSetAttribute(item, "uid", "1509")

Por isso:

 

doItemSetAttribute(item, "uid", "1510")

Em actions.xml:

 

Remove essa linha

 

<action uniqueid="1509" script="keychest.lua"/>

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

  • 0

não desculpa eu que errei aki de vez de eu bota no unic eu coloquei no action foi mal pegou normal o sistema

 

 

mas teria como vc por pra ssim o player so pode pega a chave com o npc 1 vez e so pode pega a chave com npc tal lvl?

 

ja dei rep+

Link para o comentário
Compartilhar em outros sites

  • 0

Tó.

 

 

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 level = 100 -- Level necessário

 

if msgcontains(msg, 'yes') then

if getPlayerLevel(cid) < level then

selfSay('Você precisa ser level "..level.." para pegar a chave.', cid)

talkState[talkUser] = 0

end

 

if getPlayerStorageValue(cid, 5418) == 1 then

selfSay('Você já pegou a chave.', cid)

talkState[talkUser] = 0

end

 

selfSay('Aqui está a chave.', cid)

setPlayerStorageValue(cid, 5418, 1)

item = doPlayerAddItem(cid, 2088, 1)

doItemSetAttribute(item, "uid", "1509")

talkState[talkUser] = 0

end

return true

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

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

  • 0

opa vlw irei testa aki e no bau vc tbm fez pra so poder usa a chave nele lvl 100?

 

VC TEM COMO COLOCA TBM O BAU SO PRA USA A CHAVE NELE LVL 100?

 

a parceiro achei mais um bug o bau não esta removendo a chave do player ai o player pod passa a chave para outro cara e ele fazer a quest sem msm fala com o npc tem como arruma?

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

  • 0

 

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

local reward = 2160 -- ID do item de recompensa

local count = 1 -- Quantia

local level = 100 -- Level necessário

 

if getPlayerLevel(cid) < level then

doPlayerSendCancel(cid, "Você precisa ser level "..level.." para usar a chave no baú.")

return true

end

 

if item.uid == 1509 and item2.uid == 1510 then

queststatus = getPlayerStorageValue(cid,5191)

if queststatus == -1 then

doPlayerSendTextMessage(cid,19,"Sua chave foi usada e você obteve "..getItemNameById(reward)..".")

doRemoveItem(item.uid, 1)

doPlayerAddItem(cid, reward, count)

setPlayerStorageValue(cid, 5191, 1)

else

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você não pode fazer a mesma quest duas vezes.")

end

else

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "O baú está trancado.")

end

return true

end

 

 

Tá ai.

Link para o comentário
Compartilhar em outros sites

  • 0

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 level = 100 -- Level necessário

 

if msgcontains(msg, 'yes') then

if getPlayerLevel(cid) < level then

selfSay('Você precisa ser level "..level.." para pegar a chave.', cid)

talkState[talkUser] = 0

return true

end

 

if getPlayerStorageValue(cid, 5418) == 1 then

selfSay('Você já pegou a chave.', cid)

talkState[talkUser] = 0

return true

end

 

selfSay('Aqui está a chave.', cid)

setPlayerStorageValue(cid, 5418, 1)

item = doPlayerAddItem(cid, 2088, 1)

doItemSetAttribute(item, "uid", "1509")

talkState[talkUser] = 0

end

return true

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Tó.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...