Ir para conteúdo
  • 0

[PEDIDO] NPC vender item por outro item


otlking

Pergunta

Fala galerinha!



Estou precisando muito de um NPC que venda um item por uma moeda diferente (Barras de Ouro)


Meu servidor é TFS 1.2


Achei alguns NPCs como eu queria mas na hora que eu digo o nome do item que vou comprar pelas barras, o NPC não entrega o item e nem pega as barras de ouro.


Ficarei muito grato a quem puder me ajudar.



***


10 Barras -> Soft Boots


5 Barras -> Demon Armor


(Quero poder colocar mais de um item a venda nesse NPC)




Abração!


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

7 respostass a esta questão

Posts Recomendados

  • 0

Eu tenho um mas é tfs0.3.6 eu não tenho ideia se funcionaria pra você.

Você só vai precisar substituir onde eu escrevi: "NOME_ITEM" ou "ID_ITEM" e lá onde diz "ID DAS BARRAS AQUI".

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Akbai King" script="akbaiking.lua" walkinterval="0" floorchange="0">
	<health now="150" max="150"/>
	<look type="132" head="78" body="69" legs="58" feet="76" addons="1"/>
    <parameters>
		<parameter key="message_greet" value="Ola, estou vendendo: [({NOME_ITEM1} por 5 barras)({NOME_ITEM2} por 10 barras)]"/>
		<parameter key="message_farewell" value="tchau!" />
    </parameters>
</npc>
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

local Topic = {}

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 barras = 0000 -- ID DAS BARRAS AQUI
	
	if(msgcontains(msg, 'NOME_ITEM1')) then
		if getPlayerItemCount(cid, barras) >= 5 then
			doPlayerRemoveItem(cid, barras, 5)
			doPlayerAddItem(cid, ID_ITEM1, 1)
			npcHandler:say('Foi um prazer negociar com vc.', cid)
		end
	end
	
	if(msgcontains(msg, 'NOME_ITEM2')) then
		if getPlayerItemCount(cid, barras) >= 5 then
			doPlayerRemoveItem(cid, barras, 5)
			doPlayerAddItem(cid, ID_ITEM1, 1)
			npcHandler:say('Foi um prazer negociar com vc.', cid)
		end
	end
	
	
	
	
return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Link para o comentário
Compartilhar em outros sites

  • 0

Pequeno erro parceiro, mesmo quando você não tem a quantidade de barras necessarias para comprar o item, o npc entrega o item mesmo assim.


Porfavor me ajude com esse probleminha


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

  • 0

Desculpa parceiro, foi eu que errei por não ter colocado a quantidade de barras na seguinte linha:



if getPlayerItemCount(cid, barras) >= 5 then



(Teria como você adicionar a função do npc falar que não foi possivel o player comprar o item pois não tem a quantidade de barras necessarias)



Segue o script modificado



local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

local Topic = {}

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 barras = 15515 -- ID DAS BARRAS AQUI

if(msgcontains(msg, 'Addon Doll')) then
if getPlayerItemCount(cid, barras) >= 35 then
doPlayerRemoveItem(cid, barras, 35)
doPlayerAddItem(cid, 9693, 1)
npcHandler:say('Foi um prazer negociar com voce.', cid)
end
end

if(msgcontains(msg, 'Mount Doll')) then
if getPlayerItemCount(cid, barras) >= 50 then
doPlayerRemoveItem(cid, barras, 50)
doPlayerAddItem(cid, 9019, 1)
npcHandler:say('Foi um prazer negociar com voce.', cid)
end
end

if(msgcontains(msg, 'VIP III Teleport')) then
if getPlayerItemCount(cid, barras) >= 200 then
doPlayerRemoveItem(cid, barras, 200)
doPlayerAddItem(cid, 24759, 1)
npcHandler:say('Foi um prazer negociar com voce.', cid)
end
end





return true
end

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

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

  • 0

Em cada bloco, antes do primeiro end adicione isso:

else
npcHandler:say('vc nao tem as barras.', cid)

Pronto você tem uma msg caso o player não tenha as barras necessárias :)

 

 

Fica assim:

  if(msgcontains(msg, 'Addon Doll')) then
        if getPlayerItemCount(cid, barras) >= 35 then
            doPlayerRemoveItem(cid, barras, 35)
            doPlayerAddItem(cid, 9693, 1)
            npcHandler:say('Foi um prazer negociar com voce.', cid)
        else
            npcHandler:say('vc nao tem as barras.', cid)
        end
    end

 

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

×
×
  • Criar Novo...