Ir para conteúdo

[Função] Doremovesummon


Demonbholder

Posts Recomendados

Faala pessoal do XTibia! Hoje venho aqui postar a primeira função que eu fiz, adicionei na lib e deu certo HAHA. Eu não encontrei nenhum erro, então vai lá a explicação:

 

Utilidade: A função summona um monstro (que não ataca o jogador) e remove o monstro depois de tantos segundos.

 

Foi bem fácil, em data/lib abre o arquivo functions e cola isto no final, ou em algum lugar dele:

 

function doRemoveSummon(cid, name, time)

if isMonster(getCreatureByName(name)) then
	if (type(time) == "number" and time) > 0 then
		doSummonMonster(cid, name)
			for _, monsters in ipairs(getCreatureSummons(cid)) do
				addEvent(doRemoveCreature, time*1000, monsters)
			end
			return TRUE
	end
        return error("Time must be a number higher than 0!")
end
return error("Creature not found!")
end

 

Então, bem fácil certo? Vamos aos exemplos de uso:

 

Talkaction:

 

function onSay(cid, words, param)

if param == '' then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
	return TRUE
end
return doRemoveSummon(cid, param, 10)
end

 

Action:

 

function onUse(cid, item)

local sec = 30
local mon = 'demon'

if getPlayerStorageValue(cid, 15692) - os.time() <= 0 then
	doRemoveSummon(cid, mon, sec)
	doSendAnimatedText(getPlayerPosition(cid), "Your pet will die in "..sec.." seconds.", TEXTCOLOR_ORANGE)
	setPlayerStorageValue(cid, 15692, sec + os.time())
end
return TRUE
end

 

É isso, bem simples mesmo, espero que ainda não exista algo assim, e lembrando que vai remover todos os summons, porque a função que eu usei é getPlayerSummons. Valeu.

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

É, assim como em qualquer script que tu use addEvent e a criatura morrer, mas só vai dizer que não achou a criatura, não acontece nada de mais. Se souber como eu poderia remover esse erro sem adicionar outra função, por favor, se manifeste.

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

Faala pessoal do XTibia! Hoje venho aqui postar a primeira função que eu fiz, adicionei na lib e deu certo HAHA. Eu não encontrei nenhum erro, então vai lá a explicação:

 

Utilidade: A função summona um monstro (que não ataca o jogador) e remove o monstro depois de tantos segundos.

 

Foi bem fácil, em data/lib abre o arquivo functions e cola isto no final, ou em algum lugar dele:

 

function doRemoveSummon(cid, name, time)

if isMonster(getCreatureByName(name)) then
	if (type(time) == "number" and time) > 0 then
		doSummonMonster(cid, name)
			for _, monsters in ipairs(getCreatureSummons(cid)) do
				addEvent(doRemoveCreature, time*1000, monsters)
			end
			return TRUE
	end
        return error("Time must be a number higher than 0!")
end
return error("Creature not found!")
end

 

Então, bem fácil certo? Vamos aos exemplos de uso:

 

Talkaction:

 

function onSay(cid, words, param)

if param == '' then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
	return TRUE
end
return doRemoveSummon(cid, param, 10)
end

 

Action:

 

function onUse(cid, item)

local sec = 30
local mon = 'demon'

if getPlayerStorageValue(cid, 15692) - os.time() <= 0 then
	doRemoveSummon(cid, mon, sec)
	doSendAnimatedText(getPlayerPosition(cid), "Your pet will die in "..sec.." seconds.", TEXTCOLOR_ORANGE)
	setPlayerStorageValue(cid, 15692, sec + os.time())
end
return TRUE
end

 

É isso, bem simples mesmo, espero que ainda não exista algo assim, e lembrando que vai remover todos os summons, porque a função que eu usei é getPlayerSummons. Valeu.

 

 

Caso queira retirar essa mensagen de error por não encontrar o monstro devido a morte dele, faz o seguinte:

 

retira isso da função(doremovesummon) "doSummonMonster(cid, name)" deixa isso na talkaction ou qualquer outro lugar que summone o monstro.

Agora na talkaction ou qualquer outro que summone o monstro faça com que seja direcionado a função addevent() para a sua função(doremovesummon) nela você remove a função addevent() e deixa a doremovecreature() use a estrutura de controle if pra verificar se ainda está summonado o monstro.

 

Além de que o nome da função é doremovesummon() e nela cria um summon pra depois remover o que não condiz com o nome da função.

Link para o comentário
Compartilhar em outros sites

O nome da função realmente não importa, se desejar, troque. Segundo, não importa o lugar onde aparecerá o erro, se o erro existir, é claro. Obrigado pela sugestão, mas essa foi a minha idéia inicial e definitiva para esta função.

 

OBS: Acho que é possível fazer o que você falou pela própria função doRemoveSummon. Depois eu tento.

 

EDIT:

 

Precisa quotar todo o tópico?

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

×
×
  • Criar Novo...