Ir para conteúdo

Posts Recomendados

Inanimate Object

Bom venho trazer mais um script, sei que a idéia é meio boba, mais sei la, não tinha oque fazer, é o seguinte, vc pega uma pedra(configurado para o id: 8310) e dá use num objeto, espadas, armaduras, escudos, objetos de casa, qualquer o objeto que seje "moveable" ou seja objetos que vc pode arrastar, então o objetos tomara vida e sera seu summon, o atk e a vida dele, ira basear no seu level, quando o summon morre, o item volta ao normal aonde o summon morreu, é isso kkk, caso vc queira dar vida á algum objeto que não seja "moveable" tipo arvores, flores, etc, vc configura na tabela, e caso vc não quer que um item que é "moveable" ganhe vida, só configurar tbem, esta tudo comentado no script, para configurar do seu jeito, primeiramente vc deve criar o monstro.

 

inanimate object.xml

<?xml version="1.0" encoding="UTF-8"?>
<monster name="Inanimate Object" nameDescription="a inanimate object" race="undead" experience="0" speed="250" manacost="0">
	<health now="1" max="1"/>
	<look type="232" corpse="0"/>
	<targetchange interval="5000" chance="8"/>
	<strategy attack="100" defense="0"/>
	<flags>
		<flag summonable="1"/>
		<flag attackable="1"/>
		<flag hostile="1"/>
		<flag illusionable="0"/>
		<flag convinceable="1"/>
		<flag pushable="1"/>
		<flag canpushitems="0"/>
		<flag canpushcreatures="0"/>
		<flag targetdistance="1"/>
		<flag staticattack="90"/>
		<flag runonhealth="0"/>
	</flags>
	<attacks>
	</attacks>
	<defenses armor="10" defense="20"/>
</monster>

tag:

<monster name="Inanimate Object" file="inanimate object.xml"/>

segundo passo crie outro xml, mais na pasta mod e cole o código:

 

inanimateObject.xml

<?xml version="1.0" encoding="UTF-8"?>
<mod name="inanimateObject" enabled="yes" author="Miiller" forum="XTibia.com">

<config name="inanimateObjectLib"><![CDATA[
InanimateCfg = {
	levelForUse = 1, -- level para usar
	premium = false, -- somente premium
	pz = false, -- pode dar vida a objetos em pz
	house = false, -- pode dar vida a objetos em casas
	maxSummon = 1, -- maximo de summons
	specialItems = {}, -- items que mesmo não sendo "movable" que podem ganhar vida
	blockItems = {}, -- items que são "movable" mas não podem ganhar vida
	restoreItem = true, -- depois que o summon morre, restaurar o item
}

function object_attack(cid, object)
	if not isCreature(cid) or not isCreature(object) then return true end
	if getCreatureTarget(cid) > 0 then
		if getDistanceBetween(getThingPos(getCreatureTarget(cid)), getThingPos(object)) == 1 then
			doTargetCombatHealth(object, getCreatureTarget(cid), COMBAT_PHYSICALDAMAGE, -(getPlayerLevel(cid)/4), -(getPlayerLevel(cid)/2), CONST_ME_BLOCKHIT)
		end
	end
	addEvent(object_attack, 2000, cid, object)
end
]]></config>

<action itemid="8310" event="script"><![CDATA[
domodlib("inanimateObjectLib")

    function onUse(cid, item, frompos, item2, topos)
	if getPlayerLevel(cid) < InanimateCfg.levelForUse then
		return doPlayerSendCancel(cid, "You need level " .. InanimateCfg.levelForUse .. " for give life to an object.")
	end
	if not isPremium(cid) and InanimateCfg.premium then
		return doPlayerSendCancel(cid, "You need premium for give life to an object.")
	end
	if not isItemMovable(item2.itemid) and not isInArray(InanimateCfg.specialItems, item2.itemid) or isCorpse(item2.uid) or isCreature(item2.uid) or isInArray(InanimateCfg.blockItems, item2.itemid) then
		return doPlayerSendCancel(cid, "This object can not gain life.")
	end
	if #getCreatureSummons(cid) >= InanimateCfg.maxSummon then
		return doPlayerSendCancel(cid, "You already have many summons.")
	end
	if getPlayerItemCount(cid, item2.itemid) > 0 then
		return doPlayerSendCancel(cid, "Please, place this object in ground.")
	end
	if getTileHouseInfo(topos) and not InanimateCfg.house then
		return doPlayerSendCancel(cid, "This object can not gain life in house.")
	end
	if getTilePzInfo(topos) and not InanimateCfg.house then
		return doPlayerSendCancel(cid, "This object can not gain life in protection zone.")
	end
	local obj = doCreateMonster("Inanimate Object", topos)
	doConvinceCreature(cid, obj)
	setCreatureMaxHealth(obj, getPlayerLevel(cid)*2)
	doCreatureAddHealth(obj, getPlayerLevel(cid)*2)
	doSetItemOutfit(obj, item2.itemid)
	doSendMagicEffect(getThingPos(obj), 30)
	if InanimateCfg.restoreItem then
		doCreatureSetStorage(obj, 3214, item2.itemid)
		doCreatureSetStorage(obj, 3215, item2.type == 0 and 1 or item2.type)
		registerCreatureEvent(obj, "restoreItemSummonObj")
	end
	doRemoveItem(item.uid, 1)
	doRemoveItem(item2.uid, item2.type == 0 and 1 or item2.type)
	object_attack(cid, obj)
	return true
end

]]></action>

<creaturescript type="death" name="restoreItemSummonObj" event="script"><![CDATA[
function onDeath(cid, corpse, deathList)
	doCreateItem(getCreatureStorage(cid, 3214), getCreatureStorage(cid, 3215), getThingPos(cid))
	doSendMagicEffect(getThingPos(cid), 30)
	return true
end
]]></creaturescript>

</mod>

e acabou, as configurações esta no xml da pasta mod:

InanimateCfg = {
	levelForUse = 1, -- level para usar
	premium = false, -- somente premium
	pz = false, -- pode dar vida a objetos em pz
	house = false, -- pode dar vida a objetos em casas
	maxSummon = 1, -- maximo de summons
	specialItems = {}, -- items que mesmo não sendo "movable" que podem ganhar vida
	blockItems = {}, -- items que são "movable" mas não podem ganhar vida
	restoreItem = true, -- depois que o summon morre, restaurar o item
}

configura do seu jeito kk

 

só pegar o item 8310, e usar nos objetos, fico mto leegal kkkk

 

fui

Link para o comentário
Compartilhar em outros sites

Boba ? isso e um Ótimo sistema usados em Servidores derivados, tem como fazer um ótimo proveito desse código, podendo dar use em Ossos e criar esqueletos.

 

So uma duvida ira funcionar em vários objetos ou em só nos oque eu configurar aqui?

specialItems = {}, -- items que mesmo não sendo "movable" que podem ganhar vida
Ocorreu um erro

Você já atingiu seu limite de reputações positivas para hoje

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

o script está configurado para funcionar em qualquer item que vc pode mover pra la e praca , tipo os items que usa dentro de casas, os equipamentos, armas, nessa tabela vc vai adicionar os items que vc quer q possa ganhar vida mais que não são moveable, tipo uma arvore, vc não pode arrastar ela, mais se vc colocar o id dela nessa tabela ela ira poder ganhar vida

Link para o comentário
Compartilhar em outros sites

Também tem meu voto no OMS Miller, espero uma V2.0 desse Sistema risos quem sabe uma tabela que possa vir monstros randômicos exemplo:

 

Inanimate Object Lv1

Inanimate Object Lv5

Inanimate Object Lv10

 

Vindo fortes e fracos ;)

 

Ou um tipo de maquina para montar reunindo certos itens quem sabe fazer um Robô haha, fique com meu Curtir como agradecimento, ate mais.

Link para o comentário
Compartilhar em outros sites

Massa, uma boa ideia, sabe o que seria lega? Pegar um toy spider e dar vida! auheuaheu

Eu tenho uma pergunta. Eu tenho que criar um arquivo.xml para cada item? Porque como que o script vai reconhecer o look type de cada item?

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

@zipter98

só tenho a agradecer, vlw mlkão

@Nil Value

sim não é dificil, seria legal tbem quem tiver a função que altera o nome de monstros nas sources, ai o monstro poderia ter o mesmo nome do item, seria ainda mais legal ! kkk

@JPedroTibianno

ja tem uma função q faz isso amigo, pode ficar tranquilo, só botar na pasta mods e ja era !

Link para o comentário
Compartilhar em outros sites

Massa, uma boa ideia, sabe o que seria lega? Pegar um toy spider e dar vida! auheuaheu

Eu tenho uma pergunta. Eu tenho que criar um arquivo.xml para cada item? Porque como que o script vai reconhecer o look type de cada item?

Cara você pode usar em qualquer objeto que possa mover Armaduras Armas seus Escudo e Etc.

specialItems = {}, -- items que mesmo não sendo "movable" que podem ganhar vida

Se você quiser pode dar vida a uma arvore colocando o ID Dela aqui, porque não e possível mover arvores.

Link para o comentário
Compartilhar em outros sites

gostei muito da ideia, criativo

 

inteligente esse ataque q vc pois em loop, faz com que o ataque seja baseado no lv do player e nao precise criar mais de 1 xml pra fazer que o summon seja mais forte

 

só essa verificaçao que você fez pro player nao usar o item em algum item2 que esteja em seu inventario podia ser melhor, pois se o player tiver 1 item X na bp e 1 item desse X no chao ele nao vai conseguir usar no do chao... enfim acho que vc sabe disso, mas ficou com preguiça :p

 

tem tb um ou outro erro de ingles

 

mesmo assim ta 99% perfect a ideia e o script ;)

 

fique com meu curtir, abrç

Link para o comentário
Compartilhar em outros sites

eu sei, mais ai eu ia ter q fazer uam verificação em todooooooooos os items do player até achar o msm uid, e ai vai , e tall, e a preguiça vem kkkkkkkkkkkkk

 

eu não sei porra nenhuma de inglês, usei o google tradutor |:

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...