Ir para conteúdo

Featured Replies

Postado

Alguém conseguiria fazer um NPC que venda alguns itens por Premium Points? Premium Points que eu digo são os pontos que você ganha quando faz uma determinada doação para o servidor, estou atrás desse NPC faz algumas semanas mais não encontrei. Se alguém puder fazer-lo para mim, não só para mim mais para todos que quiser esse NPC. Obrigado desde já, rep+ pra quem ajudar

Editado por Phineasz (veja o histórico de edições)

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Resolvido por Lyu

Ir para solução
Postado
  • Solução

@KotZletY Ele já conseguiu o conteúdo pelo Discord, @VitorSubhi ajudou ele, acho que já podes considerar o tópico como resolvido. Para os que veio aqui atrás do mesmo conteúdo, irei deixar uma versão minha abaixo para TFS 0.3.7/0.4.

 

data/npc/Neil.xml

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Neil" script="neil.lua" walkinterval="2000" skull="green" floorchange="0">
	<health now="100" max="100"/>
	<look type="128" head="0" body="105" legs="105" feet="0" addons="0"/>
	<parameters>
		<parameter key="message_greet" value="Olá |PLAYERNAME|. Eu vendo itens por pontos de doação, diga {trade}."/>
	</parameters>
</npc>

 

data/npc/scripts/neil.lua

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

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

local items = {
	{id = 2352, subType = 0, buy = 50, sell = 0, name = 'crystal arrow'},
	{id = 8858, subType = 0, buy = 35, sell = 0, name = 'crossbow'}
}

local onBuy = function(cid, item, subType, amount)
	local price = 0
	for _, v in ipairs(items) do
		if item == v.id then price = v.buy end
	end

    if not doPlayerRemoveMoney(cid, price) then
        selfSay(('Você não possui {%d pontos}.'):format(price), cid)
    else
		doPlayerAddItem(cid, item, amount)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Você recebeu %d %s.'):format(amount, getItemInfo(item).name))
		closeShopWindow(cid)
    end
	
    return npcHandler:releaseFocus(cid)
end

function creatureSayCallback(cid, type, msg)
	
	if msg:lower() == 'trade' then
		openShopWindow(cid, items, onBuy, onSell)
	end
end

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

 

para configurar os itens a serem negociados por pontos, é em neil.lua na tabela items :

local items = {
    {id = 2352, subType = 0, buy = 50, sell = 0, name = 'crystal arroww'},
    {id = 8858, subType = 0, buy = 35, sell = 0, name = 'ice crossbow'}
}

 

Para trocar o tipo de moeda (pontos), edite a linha 21 em :

if not doPlayerRemoveMoney(cid, price) then

 

Troque pela função de remover pontos. Abraços.

Editado por Lyu (veja o histórico de edições)

Postado
  • Autor

@KotZletY obrigado por tentar ajudar, mais como @Lyu disse, o @VitorSubhi me ajudou pelo discord.

@Lyu poderia explicar para que serve

subType = 0, buy = 50, sell = 0,

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.9k

Informação Importante

Confirmação de Termo