FO

[Npc] Vender Storage

Por fourketa123, 05 de fev. de 2012 em Scripts

storage
npc
tibia
script
otserv
11
3.4k
fourketa123F
05 de fevereiro de 2012 às 17:48

Tipo do script: Npc

Protocolo (versão do Tibia): 8.60

Servidor utilizado: Tfs 0.4

Nível de experiência: Médio

Adicionais/Informações:

 

 

Olá,

Eu Queria Um Script,

De Npc,

Que o player leva-se,

Determinado item para o npc,

O npc Daria Uma Storage,

 

 

Faça só um exemplo... Depois eu edito. :) Obrigado..

 

URGENTEEE..

 

Gogo ~> head-shot.no-ip.org <~ Ip/Site... Venham Ser Tops :) E ter Muita Diversão...

Editado Fevereiro 5 por fourketa123

jhon992J
05 de fevereiro de 2012 às 18:37
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 itemID = 1234 -- id do anel
local quantRemove = 1 -- quantidade do item acima que sera removido
local storageGain = 5678 -- storage que o player vai ganhar quando o item for removido

if (msgcontains(msg, 'yes') and doPlayerRemoveItem(cid, itemID, quantRemove)) then
selfSay('MESAGEM QUE O NPC IRA FALAR AO REMOVER O ITEM AQUI ENTRE AS ASPAS.', cid)
setPlayerStorageValue(cid, storageGain, 1)
else
selfSay('MESAGEM QUE O NPC IRA FALAR SE O PLAYER NÂO TIVER O ITEM AQUI ENTRE AS ASPAS.', cid)
end

return true
end

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

fourketa123F
05 de fevereiro de 2012 às 19:08

Para Botar Mais Que Um Item é Só?

 

local itemID = 1234, 1235

bepokemonB
06 de fevereiro de 2012 às 04:01

Para Botar Mais Que Um Item é Só?

 

local itemID = 1234, 1235

 

Nao, vai precisar fazer um loop em uma table ou array.

function doPlayerRemoveItemTable(cid, table)
for itemid,count in pairs(table) do
if not (getPlayerItemCount(cid, itemid) >= count) then
return false
end
end
return true
end

 

 

Agora eh soh declarar a funcao e utilizar uma tabela como esta:

local reqItems = {[itemid] = quant,[itemid2] = quant2}
if doPlayerRemoveItemTable(cid, reqItems) then

Editado Fevereiro 7 por Byerne

06 de fevereiro de 2012 às 09:22

@up

 

não existe return e break juntos...

jhon992J
06 de fevereiro de 2012 às 10:30

se for sóh 2 itens poem assim:

 

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 itemID = 1234 -- id do item que sera removido
local itemID2 = 5678 -- id do item que sera removido
local quantRemove = 1 -- quantidade do item acima que sera removido
local quantRemove2 = 5 -- quantidade do item acima que sera removido
local storageGain = 5678 -- storage que o player vai ganhar quando o item for removido

if (msgcontains(msg, 'yes') and getPlayerItemCount(cid, itemID) >= quantRemove and getPlayerItemCount(cid, itemID2) >= quantRemove2) then
doPlayerRemoveItem(cid, itemID, quantRemove)
doPlayerRemoveItem(cid, itemID2, quantRemove2)
selfSay('MESAGEM QUE O NPC IRA FALAR AO REMOVER O ITEM AQUI ENTRE AS ASPAS.', cid)
setPlayerStorageValue(cid, storageGain, 1)
else
selfSay('MESAGEM QUE O NPC IRA FALAR SE O PLAYER NÂO TIVER O ITEM AQUI ENTRE AS ASPAS.', cid)
end

return true
end

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

Editado Fevereiro 6 por Jhon992

06 de fevereiro de 2012 às 10:34

@up

 

se o cara só tiver 1 dos itens e não tiver o outro, o script vai remover o que ele tem...

jhon992J
06 de fevereiro de 2012 às 10:44

@up, arrumado.

fourketa123F
06 de fevereiro de 2012 às 14:54

Vlw Gente, Vou Testar...

 

 

Edit: Ai Eu gostaria que fose 3 itens o que devo acresentar..

 

vlw :X

 

Consigui... Vlw Jhon. Rep +

;)

Editado Fevereiro 6 por fourketa123

bepokemonB
06 de fevereiro de 2012 às 18:31

@up

 

não existe return e break juntos...

 

Eu tambem imaginei que nao existisse, mas vi uma pessoa fazendo. Malditas mas influencias.

06 de fevereiro de 2012 às 22:27

é cara... tem que cuidar isso.

 

é porque return e break são ambos encerradores de trechos, então não pode ter mais nada depois deles.

 

usa só return dai.