Ir para conteúdo

Posts Recomendados

Exclusivo para XTibia

favor não postar em outro forum

 

Um usuário me pediu um NPC que troca itens.......

 

Olá Conde Sapo. gostaria de pedir ajuda a você, por favor, visite meu tópico de dúvidas...

http://www.xtibia.com/forum/index.php?showtopic=67166

 

Obrigado!!!

 

[]'s, Taxijab.

Parte do PM

 

 

data\npc\Taxijab.xml

<?xml version="1.0"?>

<npc name="Taxijab" script="data/npc/scripts/Cheese.lua" access="3" lookdir="1" autowalk="200" speed="200">
<health now="1" max="1"/>
<look type="120" head="38" body="79" legs="107" feet="114"/>
</npc>

 

 

data\npc\scripts\Cheese.lua

-- NPC de troca - By Conde Sapo
local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false
local addon_state = 0

function onThingMove(creature, thing, oldpos, oldstackpos)
end

function onCreatureAppear(creature)
end

function onCreatureDisappear(cid, pos)
if focus == cid then
	selfSay('Good bye then.')
	focus = 0
	talk_start = 0
end
end

function onCreatureTurn(creature)
end

function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end

function onCreatureSay(cid, type, msg)
msg = string.lower(msg)

if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
	selfSay('Olá ' .. getCreatureName(cid) .. '... Eu daria tudo por alguns queijos... Você tem 5 sobrando aí? Eu posso te dar meu escudo em troca!')
	focus = cid
	talk_start = os.clock()

elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
	selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.')

elseif focus == cid then
	talk_start = os.clock()
	if msgcontains(msg, 'queijo') or msgcontains(msg, 'escudo') then
		if doPlayerRemoveItem(cid,2696,5) == 0 then
			selfSay('Eu disse 5 QUEIJOS!')
			addon_state = 0
		else 
			selfSay('Obrigado, muito mesmo! Tome, isto pode ser útil para você!')
			doPlayerAddItem(cid, 2512, 1)
			talk_start = 0
		end 

	elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
		selfSay('Good bye, ' .. getCreatureName(cid) .. '! Come back soon..')
		focus = 0
		talk_start = 0
	end
end
end

function onCreatureChangeOutfit(creature)
end

function onThink()
doNpcSetCreatureFocus(focus)
if (os.clock() - talk_start) > 30 then
	if focus > 0 then
		selfSay('Next Please...')
	end
	focus = 0
end
if focus ~= 0 then
	if getDistanceToCreature(focus) > 5 then
		selfSay('Good bye then.')
		focus = 0
	end
end
end

É um NPC estremamente simples mas útil pros servers que tem ROOKGARD

O Player entra com 5 queijos e sai com o Wooden Shield

 

Os usuários mais criatvos podem transformar este simples NPC em um NPC que troca coisas mais interessantes.

o único limite é a criatividade.

 

Boas Criações.

:XTibia_smile:

Editado por Conde Sapo
Link para o comentário
https://xtibia.com/forum/topic/67224-npc-que-troca-itens/
Compartilhar em outros sites

Parece ser bom, vou colocar no meu server. ^^

Mas tenho uma pergunta, ele só troca 1 item por outro, exemplo:

Tenho uma MPA, ele troca somente por outro item, não da pra trocar 2 itens por 1 ?

 

@Taxijab

Eu sei que da para trocar por dois itens que sejam do mesmo ID, eu queria saber se daria para trocar por dois itens de ID diferente.

 

//GM Matthor

Editado por GM Matthor
Link para o comentário
https://xtibia.com/forum/topic/67224-npc-que-troca-itens/#findComment-414243
Compartilhar em outros sites

Muito, muito obrigado, conde! É muito bom saber que ainda existem pessoas assim!

 

E esse NPC não é só de grande ajuda para mim, mas para muitos outros OT's sérios também!

 

@GM Mathor

Se estiver enganado, alguém me corrija, mas dá sim, localize a linha:

if doPlayerRemoveItem(cid,2696,5) == 0 then

 

Troque pelo item que o player deve ter

Troque pela quantidade de itens que o player tem

 

E também:

doPlayerAddItem(cid, 2512, 1)

 

Troque pelo item que o player recebe

Troque pela quantidade de itens que o player recebe

Link para o comentário
https://xtibia.com/forum/topic/67224-npc-que-troca-itens/#findComment-414390
Compartilhar em outros sites

Aew mais um ótimo tutor...

de parabens mesmo

cara... num faz mto tempo q me integrei a este FORUM mais os trabalhos dos quais tem maior destaque aki, penso q são os seus

Alguem aew me corrige se eu estiver errado

sinceramente muito bom

e aprovadissimo

Link para o comentário
https://xtibia.com/forum/topic/67224-npc-que-troca-itens/#findComment-415935
Compartilhar em outros sites

  • 2 weeks later...
muito bom, mas meu ot não tem

rookgard,

Eu disse que o único limite é a criatividade....

Veja meu amiguinho ae de baixo !!!

 

Vou fazer um NPC de Soft Boots e Worn~ já que o único limite é a criatividade.
Parabundas....

Você sabe ler as entrelinhas....

 

 

[ ]s

:smile_positivo:

Link para o comentário
https://xtibia.com/forum/topic/67224-npc-que-troca-itens/#findComment-421289
Compartilhar em outros sites

Thunder Sundex,

 

Neste caso repare nesta função:

 

if doPlayerRemoveItem(cid,2696,5) == 0 then

 

Troque o 2696 pelo id do item que tem que dar 2 deles.

 

Depois o 5 troque por 2 que no caso seria a quantidade de itens que precisaria ter para trocar!

 

Espero ter ajudado até +

Link para o comentário
https://xtibia.com/forum/topic/67224-npc-que-troca-itens/#findComment-423930
Compartilhar em outros sites

Como eu faço pra fazer tipo..

troco 2 items por 1 item?

 

 

o comando doPlayerRemoveItem é pratico pra conferir 1 item

pra nais de 1 item é aconselhavel doPlayerItemCount e só depois remove-los

 

Quantidade1 = getPlayerItemCount(cid,ID_1)
Quantidade2 = getPlayerItemCount(cid,ID_2)
Quantidade3 = getPlayerItemCount(cid,ID_3)
QuantidadeETC = getPlayerItemCount(cid,ID_ETC)

if Quantidade1 >= QTD1 and Quantidade2 >= QTD2 and Quantidade3 >= QTD3 and QuantidadeETC >= QTD_ETC then
doPlayerSendTextMessage(cid,22,"Você ganhou o item bla-bla-bla!.")
doPlayerAddItem(cid,ID_DO_PRESENTE,QTD)
doPlayerRemoveItem(cid, ID_1, QTD1)
doPlayerRemoveItem(cid, ID_2, QTD2)
doPlayerRemoveItem(cid, ID_3, QTD3)
doPlayerRemoveItem(cid, ID_ETC, QTD_ETC)
end

Link para o comentário
https://xtibia.com/forum/topic/67224-npc-que-troca-itens/#findComment-428230
Compartilhar em outros sites

  • 3 weeks later...
×
×
  • Criar Novo...