[Função] Doremovesummon

Demonbholder
em Mods, funções e outros

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

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.

Oie :D

pintopinto

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 26/02/11Posts: 20

Tem um bug nessa função caso o summon esteja morto retorna um erro:

(luaDoRemoveCreature) Creature not found

por causa do addEvent.

Sou:

 

65% |Web Programming| - Intermediário.

55% |Lua Programming| - Intermediário.

50% |C++| - Intermediário

10% |Mapping| - Iniciante

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

É, 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.

Oie :D

godshiryu

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/08/08Posts: 1

MEU DEUS!

VO USA! JA TO PUIS NOO MEU OT!!

 

 

MUITO BOM MESMO MAN RECOMENDO AI EM GALERA!

RULOU!

Hudsin

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 03/03/07Posts: 150Gênero: MasculinoChar no Tibia: Kaball Madness

Ótimo Script Testado e aprovado! Muito legal para eventos :hi:

aseFp.gif

MatheusGlad

<~~> Scripter <~~>
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 09/09/09Posts: 528Char no Tibia: Emekalo Makalo

em vez de print usa error(), so botar error(msg)

Yours Mkalo :)

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

Valeu pelo toque mkalo, editei lá ja.

Oie :D

satan666

Antichrist Superstar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 07/05/08Posts: 612Char no Tibia: leviana luciferiana

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.

creationb.jpg

"Um Deus que usasse seu poder para criar seres humanos que de antemão sabia que seriam atormentados eternamente, e que os predestinasse a isso,



não poderia ser sábio, nem justo e tampouco amoroso.

Além de nos submeter a isso vim a nos julgar e condenar por nossos atos aos tormentos do inferno.

pra minha pessoa isso não é um Deus Pai amoroso e bondoso como o chaman, seu padrão seria muito mais inferior do que o de muitos homens."

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

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?

Oie :D

lucashgas

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 11/11/07Posts: 245

Maravilhoso, graças a Deus, estava procurando isso mesmo...

 

Nossa vai ser muito util...

 

ganhou meu REP+

Te ajudei? Rep++