Ir para conteúdo
  • 0

Dinheiro Que O Npc Aceita


Zuth kimu

Pergunta

Olá eu gostaria de saber só 1 coisa.

Neste script de NPC, aonde localiza-se o tipo de moeda que o NPC aceita?

 

local focus = 0
local talk_start = 0
local target = 0
local days = 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('Hello ' .. creatureGetName(cid) .. '! I sell premium.')
		focus = cid
		talk_start = os.clock()

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

 	elseif focus == cid then
	talk_start = os.clock()

	if msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') then
			if getPlayerVocation(cid) > 4 then
				selfSay('Sorry, you are already promoted.')
				talk_state = 0
			elseif getPlayerLevel(cid) < 20 then
			selfSay('Sorry, you need level 20 to buy promotion.')
			talk_state = 0
		elseif not isPremium(cid) then
			selfSay('Sorry, you must be premium to buy promotion.')
			talk_state = 0
		else
			selfSay('Do you want to buy promotion for 20k?')
			talk_state = 1
		end

	elseif msgcontains(msg, 'premium') or msgcontains(msg, 'premmy') then
		selfSay('Do you want to buy 7 days of premium for 7k?')
		talk_state = 2

	elseif talk_state == 1 then
		if msgcontains(msg, 'yes') then
			if pay(cid,20000) then
				doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
				selfSay('You are now promoted!')
			else
				selfSay('Sorry, you do not have enough money.')
			end
			end
		talk_state = 0

	elseif talk_state == 2 then
		if msgcontains(msg, 'yes') then
			if pay(cid,7000) then
				selfSay('/premium '.. creatureGetName(cid) ..', 7')
				selfSay('You have 7 days of premium more!')
			else
				selfSay('Sorry, you do not have enough money.')
			end
		end
		talk_state = 0

 		elseif msgcontains(msg, 'bye')  and getDistanceToCreature(cid) < 4 then
 			selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
 			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

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

4 respostass a esta questão

Posts Recomendados

  • 0

Zuth kimu,

O NPC não aceita, bem, moeda ou item. Ele só verifica se o jogador pode pagar os preços com uma função, veja abaixo:

 

if pay(cid, 20000) then

e

if pay(cid, 7000) then

 

Se o jogador pagar esse valor, o NPC irá prosseguir com a programação da rotina, do contrário irá mandar uma mensagem de que o jogador não possui dinheiro.

 

Se você quiser mudar isso para remover itens do jogador, você pode fazer com essa função lógica:

 

if doPlayerRemoveItem(cid, ID DO ITEM, QUANTIDADE) then

 

Se você quiser registrar um novo tipo de moeda, poderá ir ao arquivo XML items e no item, adicionar essa chave:

 

<attribute key="worth" value="VALOR DA MOEDA" />

 

Lembrando que o VALOR DA MOEDA se refere a uma só moeda, por exemplo, o valor de uma crystal coin é 10000

 

Até mais,

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

×
×
  • Criar Novo...