Ir para conteúdo
  • Cadastre-se

NPC Concede Bônus aos Players


Posts Recomendados

Estou trazendo 1 script por semana (geralmente na terça-feira) e caso você tenha alguma sugestão, poste aqui ou mande em mensagem privada a ideia, podendo ser o da próxima semana.

 

Olá pessoal, estou trazendo outro script para o TibiaKing, este NPC faz parte de uma série de NPC's que eu posicionei em meu servidor em locais estratégicos, concedendo bônus diferentes para os jogadores.

 

Em seus NPC's, crie um arquivo XML e coloque o seguinte:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Luke" script="data/npc/scripts/speedbuff.lua" walkinterval="2000" floorchange="0">
	<health now="100" max="100"/>
	<look type="152" head="95" body="95" legs="29" feet="56" addons="2" corpse="6080"/>
	<parameters>
	<parameter key="message_greet" value="Ola, voce gostaria de um bonus?" />
	</parameters>
</npc>

 

E dentro da pasta de scripts dos seus NPC's crie um arquivo LUA e coloque:

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

local config ={
    effectTime = 10, -- tempo em minutos
    maxLevel = 125, -- level maximo para receber
    influencer = 2, -- multiplicador da velocidade aumentada
	timeStorage = 319203 -- storage para o tempo
}

local function downSpeed(cid, speed)
	doChangeSpeed(cid, -speed)
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, "bonus") then	
        local level = getPlayerLevel(cid)
        
		if level < config.maxLevel then
			if os.time() > getPlayerStorageValue(cid, config.timeStorage) then
				setPlayerStorageValue(cid, config.timeStorage, config.effectTime * 60 + os.time())
				
				local speed = config.maxLevel - level	
				doChangeSpeed(cid, speed * config.influencer)
					
				addEvent(downSpeed, 60 *  config.effectTime, cid, speed * config.influencer)
				selfSay('Voce recebeu um bonus de velocidade.', cid)
			else
				local minutesText
				local secondsText
				local seconds = math.floor((getPlayerStorageValue(cid, config.timeStorage) - os.time()) % 60) + 1
				local minutes = math.floor((getPlayerStorageValue(cid, config.timeStorage) - os.time()) / 60)
				minutesText = minutes .." minutos e " 
				secondsText = seconds .." segundos."
				if seconds == 60 then
					minutes = minutes + 1
				end
				if minutes == 0 then
					minutesText = ""
				end
				if seconds == 0 or seconds == 60 then
					if minutes > 0 then
						minutesText = minutes .." minutos."
					end
					secondsText = ""
				end
				selfSay('Voce ja possui o bonus, ele expira em ' ..minutesText ..secondsText, cid)
				
			end
		else
			selfSay('O bonus de velocidade so e aplicado para jogadores de level menor de que '..config.maxLevel..".", cid)
		end
	end
end


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

Explicando o código: com essas configurações o NPC irá:
- Conceder ao jogador 10 minutos de bônus de velocidade para jogadores level 125 ou menos.

- O jogador que receber o bônus terá velocidade igual a um jogador de level 125.

- Impedir o jogador de pegar o bônus diversas vezes.

- Todas as configurações podem ser alteradas na variável "config" no topo do código.

 

Qualquer dúvida deixe nos comentários e lembre de enviar a sua sugestão :) 

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

Link para o post
Compartilhar em outros sites

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
  • 5 months later...
  • 5 months later...

Queria um npc que quando chegasse no nível adequado, ele ganhava um item do npc.

Isso só poderia aconteceer na primeira vez que ele conseguir upa. Tipo, upou 1000 "ganhou!".

Morreu e depois upou 100 "você já ganhou seu item!"

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo