Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] NPC que troca itens por dias premium


Ir para solução Resolvido por Nazo,

Posts Recomendados

Boa tarde, gostaria de uma script de npc que troque "X" item por dias premium(igual o npc de diamonds do antigo svke), pode ser 1 unidade para 1 dia!

Uso a base TFS 0.3.6, agradecido!

Link para o post
Compartilhar em outros sites

Na pasta npc adicione o seunpc.xml com o seguinte conteúdo:

<?xml version="1.0"?>

<npc name="SeuNPC" script="data/npc/scripts/seunpc.lua" walkinterval="50000" floorchange="0">
	<health now="100" max="100"/>
	<look type="63" head="0" body="0" legs="0" feet="0" addons="3"/>
	<parameters>
		<parameter key="message_greet" value="Olá! |PLAYERNAME|, deseja {trocar} seus diamonds por dias premium?..." />
	</parameters>
</npc>

 

Em npc/scripts/ adicione o seunpc.lua com o seguinte conteúdo:

config = {
	item = 2145 -- id do diamond
}

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, 'TROCAR') or msgcontains(msg, 'trocar')) then
		npcHandler:say("Quantos diamonds você deseja trocar por dias premium?", cid)
		talkState[cid] = 1
	elseif talkState[cid] == 1 then
		msg = tonumber(msg)
		if(doPlayerRemoveItem(cid,config.item,msg) and isNumber(msg) and msg > 0)then
			doPlayerAddPremiumDays(cid, msg)
			str = "Agora você possui mais " .. msg .. " dia(s) premium."
		else
			str = "Você não possui essa quantia."
		end
		npcHandler:say(str, cid)
	end
	return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Programador PHP, Lua, Java, database administrator.

 

"Nada é verdade, tudo é permitido."

Requiescat in pace.

Link para o post
Compartilhar em outros sites

@Nazo  Filé hein, no caso a quantidade de diamonds que tiver será trocável por dias premium né isso?

exemplo: o jogador tem 6 diamonds, serão 6 dias premium?

Link para o post
Compartilhar em outros sites

Basicamente, @tavarb, o querido player digita quantos diamonds ele quer trocar por premmy (onde cada diamond é um dia premmy), e o npc troca pra ele ^^

Programador PHP, Lua, Java, database administrator.

 

"Nada é verdade, tudo é permitido."

Requiescat in pace.

Link para o post
Compartilhar em outros sites

Perfeito, @Nazo , tem como adaptar para colocar uma quantidade mínima de 7 diamonds? Mas mantendo o sistema de (onde cada diamond é um dia premmy).

Link para o post
Compartilhar em outros sites
  • Solução

Aqui, meu chapa:

config = {
	item = 2145, -- id do diamond
	min = 7
}

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, 'TROCAR') or msgcontains(msg, 'trocar')) then
		npcHandler:say("Quantos diamonds você deseja trocar por dias premium?", cid)
		talkState[cid] = 1
	elseif talkState[cid] == 1 then
		msg = tonumber(msg)
		if(doPlayerRemoveItem(cid,config.item,msg) and isNumber(msg) and msg >= config.min)then
			doPlayerAddPremiumDays(cid, msg)
			str = "Agora você possui mais " .. msg .. " dia(s) premium."
		else
			str = "Você não possui essa quantia, ou ofereceu menos que "..config.min.." diamonds."
		end
		npcHandler:say(str, cid)
	end
	return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Programador PHP, Lua, Java, database administrator.

 

"Nada é verdade, tudo é permitido."

Requiescat in pace.

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo