CA
pedido

Script Npc E Bau Que Usa Um Item Nele

Por cacaiu, 01 de set. de 2012 em Scripts

npc e bau
script
12
1.6k
cacaiuC
01 de setembro de 2012 às 13:22

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

LuckOakeL
01 de setembro de 2012 às 14:16

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 Setembro 1 por LuckOake

cacaiuC
01 de setembro de 2012 às 16:07

ok irei testa aki

 

@EDIT

 

quando uso a chave no bau diz isso..

 

8b8p5.png

http://i.imgur.com/8b8p5.png

 

tem como arruma?

LuckOakeL
01 de setembro de 2012 às 16:18

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 Setembro 1 por LuckOake

cacaiuC
01 de setembro de 2012 às 16:37

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+

LuckOakeL
01 de setembro de 2012 às 16:50

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 Setembro 1 por LuckOake

cacaiuC
01 de setembro de 2012 às 20:03

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 Setembro 1 por cacaiu

MatedM
01 de setembro de 2012 às 21:10

Muito bom o script, se conseguir arrumar o bug que o amigo está falando acima /\, amanha dou outro rep + ^^

LuckOakeL
02 de setembro de 2012 às 16:19

 

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.

cacaiuC
03 de setembro de 2012 às 14:31

ok vou testa mais ja vou dando o outro rep q prometi

 

amigo axei um problema nesse ultimo npc q min amndou:

 

usg18.png

http://i.imgur.com/usg18.png

 

ele da a chave sempre que o player pede =[

LuckOakeL
03 de setembro de 2012 às 19:29

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

cacaiuC
03 de setembro de 2012 às 21:38

vlw cara agora sim ficou show =D

 

olha como eu queria usa esse script:

 

 

http://www.xtibia.com/forum/topic/183630-as-tres-versoes-do-pokemon-centurion/page__pid__1331499__st__3140#entry1331499