Ir para conteúdo
  • 0

[npc] NPC de bless por level


BlackLeft

Pergunta

Preciso de um npc que venda todas as bless de uma vez só, e também seria preço tabelado por level:

 

 

Say: hi

Npc: Olá eu vendo bless
say: bless

npc:sua bless custa (...) deseja comprar ?

say: yes

npc: você foi abençoado.

 

(com isso adicionaria todas as bless no player)


Tabela de preço:

do level 50 ao lvl 100 - 10k

do level 101 ao lvl 150 - 20k

do level 151 ao 200 - 30k

do level 201 ao 250 - 50k

do level 251 ao 300 - 70k
do level 300+ - 100k

 

 

 

Obrigado

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Eu fiz diferente do que você pediu mais deve quebrar um galho até alguém fazer exatamente como você quer...

 

Em npc crie um arquivo com o nome npcbless.xml e adicione isso dentro:

<?xml version="1.0"?>
<npc name="Blessing" script="data/npc/scripts/npcbless.lua" walkinterval="1000" floorchange="0">
<health now="100" max="100"/>
<look type="133" head="114" body="119" legs="132" feet="114" addons="3"/>
<parameters>
<parameter key="message_greet" value="Ola {|PLAYERNAME|}, para saber o preco da bless basta digitar {valor}, se quiser comprar bless digite {bless}!" />
</parameters>
</npc>

Em npc/scripts crie um arquivo com o nome npcbless.lua e adicione isso dentro:

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

-- CONFIG --	
local gold = {
p1 = 10000, -- Preço em Gold 50 ao 100
p2 = 20000, -- Preço em Gold 101 ao 150
p3 = 30000, -- Preço em Gold 151 ao 200
p4 = 50000, -- Preço em Gold 201 ao 250
p5 = 70000, -- Preço em Gold 251 ao 299
p6 = 100000 -- Preço em Gold 300 em diante
}
-- CONFIG --	
	if msgcontains(msg, 'valor') then
		doPlayerPopupFYI(cid, "Preço blessing:\n\nLeve 50 ao 100: "..gold.p1.." gp\nLeve 101 ao 150: "..gold.p2.." gp\nLeve 151 ao 200: "..gold.p3.." gp\nLeve 201 ao 250: "..gold.p4.." gp\nLeve 251 ao 299: "..gold.p5.." gp\nLeve 300 em diante: "..gold.p6.." gp")
	end
	if msgcontains(msg, 'bless') then
		if getPlayerBlessing(cid, 5) then
			selfSay('Desculpe {'..getPlayerName(cid)..'}, você já tem full blessing!', cid)
		return end
		
			if getPlayerLevel(cid) >= 50 and getPlayerLevel(cid) <= 100 then
				if getPlayerMoney(cid) >= gold.p1 then
					doPlayerRemoveMoney(cid, gold.p1)
					doPlayerAddBlessing(cid, 1)
					doPlayerAddBlessing(cid, 2)
					doPlayerAddBlessing(cid, 3)
					doPlayerAddBlessing(cid, 4)
					doPlayerAddBlessing(cid, 5)
					selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
					doSendMagicEffect(getPlayerPosition(cid), 28)
				else
					selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
				end

			elseif getPlayerLevel(cid) >= 101 and getPlayerLevel(cid) <= 150 then
				if getPlayerMoney(cid) >= gold.p2 then
					doPlayerRemoveMoney(cid, gold.p2)
					doPlayerAddBlessing(cid, 1)
					doPlayerAddBlessing(cid, 2)
					doPlayerAddBlessing(cid, 3)
					doPlayerAddBlessing(cid, 4)
					doPlayerAddBlessing(cid, 5)
					selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
					doSendMagicEffect(getPlayerPosition(cid), 28)
				else
					selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
				end

			elseif getPlayerLevel(cid) >= 151 and getPlayerLevel(cid) <= 200 then
				if getPlayerMoney(cid) >= gold.p3 then
					doPlayerRemoveMoney(cid, gold.p3)
					doPlayerAddBlessing(cid, 1)
					doPlayerAddBlessing(cid, 2)
					doPlayerAddBlessing(cid, 3)
					doPlayerAddBlessing(cid, 4)
					doPlayerAddBlessing(cid, 5)
					selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
					doSendMagicEffect(getPlayerPosition(cid), 28)
				else
					selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
				end

			elseif getPlayerLevel(cid) >= 201 and getPlayerLevel(cid) <= 250 then
				if getPlayerMoney(cid) >= gold.p4 then
					doPlayerRemoveMoney(cid, gold.p4)
					doPlayerAddBlessing(cid, 1)
					doPlayerAddBlessing(cid, 2)
					doPlayerAddBlessing(cid, 3)
					doPlayerAddBlessing(cid, 4)
					doPlayerAddBlessing(cid, 5)
					selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
					doSendMagicEffect(getPlayerPosition(cid), 28)
				else
					selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
				end

			elseif getPlayerLevel(cid) >= 251 and getPlayerLevel(cid) <= 299 then
				if getPlayerMoney(cid) >= gold.p5 then
					doPlayerRemoveMoney(cid, gold.p5)
					doPlayerAddBlessing(cid, 1)
					doPlayerAddBlessing(cid, 2)
					doPlayerAddBlessing(cid, 3)
					doPlayerAddBlessing(cid, 4)
					doPlayerAddBlessing(cid, 5)
					selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
					doSendMagicEffect(getPlayerPosition(cid), 28)
				else
					selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
				end

			elseif getPlayerLevel(cid) >= 300 then
				if getPlayerMoney(cid) >= gold.p6 then
					doPlayerRemoveMoney(cid, gold.p6)
					doPlayerAddBlessing(cid, 1)
					doPlayerAddBlessing(cid, 2)
					doPlayerAddBlessing(cid, 3)
					doPlayerAddBlessing(cid, 4)
					doPlayerAddBlessing(cid, 5)
					selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
					doSendMagicEffect(getPlayerPosition(cid), 28)
				else
					selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
				end				
			end
	end
return true
end

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

Quando você fala a palavra "valor" para o npc ele abre a seguinte mensagem:

u3l0.jpg

 

- Ele verifica o level do player e vende a bless conforme o level

- Se o player já tiver bless o npc avisa ele ao falar "bless"

00:22 Blessing: Desculpe Maarkiin, você já tem full blessing!

Espero que sirva, abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta ai

pasta Npcs

Crie um arquivo chamado Sandra.xml e cole isso

 

 

<?xml version="1.0"?>

<npc name="Sandra" script="bless.lua" walkinterval="10230" floorchange="0">

<health now="100" max="100"/>

<look type="MudeaLookType" head="91" body="114" legs="86" feet="0"/>

<parameters>

<parameter key="message_greet" value="Ola {|PLAYERNAME|}, quer comprar bless? diga Bless !" />

</parameters>

</npc>

 

 

pasta npcs/scripts

crie Bless.lua e ponha isso

 

 

local focus = 0
local talk_start = 0
local conv = 0
local target = 0
local lvl1 = 100
local lvl2 = 150
local lvl3 = 200
local lvl4 = 250
local lvl5 = 300
function onCreatureSay(cid, type, msg)
local msg = string.lower(msg)
if focus == cid then
talk_start = os.clock()
end
if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then
focus = cid
talk_start = os.clock()
conv = 0
selfSay('Olá eu vendo bless')
else
conv = 1
selfSay('Olá.')
end
return true
end
if msgcontains(msg, 'bless') and conv == 1 and focus == cid then
selfSay('sua bless custa do level 50 ao lvl 100 - 10k do level 101 ao lvl 150 - 20k do level 151 ao 200 - 30k do level 201 ao 250 - 50k do level 251 ao 300 - 70k do level 300+ - 100k deseja comprar ?')
conv = 2
return true
end
if msgcontains(msg, 'no') and conv == 1 and focus == cid then
selfSay('ok!')
focus = 0
return true
end
if getPlayerItemCount(cid, 2160) == 0 then
selfSay ('Não tem dinheiro')
return true
end
if msgcontains(msg, 'yes') and conv == 2 and focus == cid then
if getPlayerLevel(cid) <= lvl1
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
doPlayerAddBlessing(cid, 6)
doPlayerAddBlessing(cid, 7)
doPlayerSetLossSkill(cid, 0)
selfSay('você foi abençoado!')
doRemoveItem(2160, 1)
focus = 0
else
if getPlayerLevel(cid) <= lvl2 and not <= lvl1 and not getPlayerItemCount(cid, 2160) == 0 then
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
doPlayerAddBlessing(cid, 6)
doPlayerAddBlessing(cid, 7)
doPlayerSetLossSkill(cid, 0)
selfSay('você foi abençoado!')
doRemoveItem(cid, preco[1], preco[2])
else
if getPlayerLevel(cid) <= lvl3 and not <= lvl1 and not <= lvl2 and not getPlayerItemCount(cid, 2160) == 0 then
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
doPlayerAddBlessing(cid, 6)
doPlayerAddBlessing(cid, 7)
doPlayerSetLossSkill(cid, 0)
selfSay('você foi abençoado!')
doRemoveItem(2160, 3)
else
if getPlayerLevel(cid) <= lvl4 and not <= lvl1 and not <= lvl2 and not <= lvl3 and not getPlayerItemCount(cid, 2160) == 0 then
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
doPlayerAddBlessing(cid, 6)
doPlayerAddBlessing(cid, 7)
doPlayerSetLossSkill(cid, 0)
selfSay('você foi abençoado!')
doRemoveItem(2160, 5)
else
if getPlayerLevel(cid) <= lvl5 and not <= lvl1 and not <= lvl2 and not <= lvl3 and not <= lvl4 and not getPlayerItemCount(cid, 2160) == 0 then
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
doPlayerAddBlessing(cid, 6)
doPlayerAddBlessing(cid, 7)
doPlayerSetLossSkill(cid, 0)
selfSay('você foi abençoado!')
doRemoveItem(2160, 7)
else
if getPlayerLevel(cid) >= lvl5 and not <= lvl1 and not <= lvl2 and not <= lvl3 and not <= lvl4 and not getPlayerItemCount(cid, 2160) == 0 then
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
doPlayerAddBlessing(cid, 6)
doPlayerAddBlessing(cid, 7)
doPlayerSetLossSkill(cid, 0)
selfSay('você foi abençoado!')
doRemoveItem(2160, 10)
return true
end
if msgcontains(msg, 'no') and conv == 2 and focus == cid then
selfSay('ok.')
focus = 0
return true
end
if msgcontains(msg, 'bye') and focus == cid then
selfSay('Até logo!')
focus = 0
return true
end
end
local delay = 40
function onThink()
if focus == 0 then
selfTurn(2)
delay = delay - 0.5
if delay <= 0 then
selfSay("Eu Vendo Bless!")
delay = math.random(45, 80)
end
return true
else
if not isCreature(focus) then
focus = 0
return true
end
local npcpos = getThingPos(getThis())
local focpos = getThingPos(focus)
if npcpos.z ~= focpos.z then
focus = 0
return true
end
if (os.clock() - talk_start) > 30 then
focus = 0
selfSay("Vendo Bless!.")
end
if getDistanceToCreature(focus) > 4 then
selfSay("Sempre ande abençoado!")
focus = 0
return true
end
local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))
selfTurn(dir)
end
return true
end

 

 

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

×
×
  • Criar Novo...