Bom, ontem eu pedi ideias na area de pedidos de uma dessas ideias foi o sistema de clone, que será explicado a seguir:
Bom, é bem simples o sistema, e ainda está em sua versão 1.0 então, ainda contem alguns bugs, que serão mostrados também no tópico.
O sistema necessita que o jogador digite /clone e, tudo que o jogador fizer o clone vai fazer..
exemplos:
mudar roupa, o clone muda
atacar, o clone ataca com mesmo dano
se curar, o clone se cura também
Como Utilizar?
digite /clone no jogo.
Bugs:
Quando o clone atacar, não está saindo distanceEffect (da o dano, mas nao sai o efeitinho vindo do clone)
Clone não subindo escadas (depois arrumo isso, é que não tenho a id de todas escadas)
Não copia nickname do jogador (para nao ter que modificar sources adicionando createCustomMonster)
Instalação:
em data/monsters crie o arquvo clone.xml e adicione isso:
<?xml version="1.0" encoding="UTF-8"?> <monster name="Clone" nameDescription="a clone" race="blood" experience="0" speed="240" manacost="0"> <health now="1" max="1"/> <look type="220" corpse="0"/> <targetchange interval="5000" chance="8"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <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="5"/> </flags> </monster>
agora em data/monsters abra o monsters.xml e no meio das tags, adicione isso:
<monster name="Clone" file="clone.xml"/>
agora, na pasta que fica o executavel do servidor, vá em mods, crie o arquivo clone.xml e adicione isso:
<?xml version="1.0" encoding="iso-8859-1"?> <mod name="Clone System" version="1.0" author="Draky Lucas" contact="XTibia" enabled="yes"> <config name="configuracao_clone"><![CDATA[ config = { tempo = 2*60*1000, -- em milisegundos, pra remover o clone (está 2 minutos) name = "Clone", -- nao mecha mana = 2000, -- mana que precisa pra sumonar } function sumonar(cid,name) doPlayerAddMana(cid,-config.mana) doPlayerSendTextMessage(cid,19,"Seu clone sera removido em 2 minutos") local summon = doSummonCreature(name,getCreaturePosition(cid)) doSetCreatureOutfit(summon, getCreatureOutfit(cid), -1) doChangeSpeed(summon,-getCreatureSpeed(summon) + getCreatureBaseSpeed(cid)) setCreatureMaxHealth(summon,getCreatureMaxHealth(cid)) doCreatureAddHealth(summon,-getCreatureHealth(summon) + getCreatureHealth(cid)) doConvinceCreature(cid,summon) registerCreatureEvent(cid,"clone") registerCreatureEvent(cid,"clonecombat") registerCreatureEvent(cid,"cloneoutfit") addEvent(removerClone,config.tempo,cid) end function removerClone(cid) if not isCreature(cid) then return true end if #getCreatureSummons(cid) > 0 then if getCreatureName(getCreatureSummons(cid)[1]) == config.name then doRemoveCreature(getCreatureSummons(cid)[1]) doPlayerSendTextMessage(cid,19,"Seu clone foi retirado!") end end unregisterCreatureEvent(cid,"clone") unregisterCreatureEvent(cid,"clonecombat") unregisterCreatureEvent(cid,"cloneoutfit") return true end ]]></config> <talkaction words="/clone" event="buffer"><![CDATA[ domodlib("configuracao_clone") if #getCreatureSummons(cid) >= 1 then return doPlayerSendCancel(cid,"voce nao pode ter summons para se clonar") end if getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid,"Voce nao pode se clonar em protection zone!") end if getPlayerMana(cid) < config.mana then return doPlayerSendCancel(cid,"Voce precisa de ".. config.mana .. " de mana para se clonar!") end sumonar(cid,config.name) ]]></talkaction> <event type="statschange" name="clone" event="buffer"><![CDATA[ domodlib('configuracao_clone') -- function onStatsChange(cid, attacker, type, combat, value) if #getCreatureSummons(cid) < 1 or getCreatureName(getCreatureSummons(cid)[1]) ~= config.name then unregisterCreatureEvent(cid,"clone") unregisterCreatureEvent(cid,"clonecombat") unregisterCreatureEvent(cid,"cloneoutfit") return true end if type == STATSCHANGE_HEALTHGAIN then doTargetCombatHealth(cid, getCreatureSummons(cid)[1], combat, value, value, 12) end -- return true -- end ]]></event> <event type="combat" name="clonecombat" event="buffer"><![CDATA[ domodlib('configuracao_clone') -- function onCombat(cid,target) if #getCreatureSummons(cid) < 1 or getCreatureName(getCreatureSummons(cid)[1]) ~= config.name then unregisterCreatureEvent(cid,"clone") unregisterCreatureEvent(cid,"clonecombat") unregisterCreatureEvent(cid,"cloneoutfit") return true end if target ~= cid then registerCreatureEvent(target, "clonestats") end -- return true -- end ]]></event> <event type="statschange" name="clonestats" event="buffer"><![CDATA[ domodlib('configuracao_clone') -- function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS and #getCreatureSummons(attacker) > 0 and getCreatureName(getCreatureSummons(attacker)[1])== config.name then return doTargetCombatHealth(getCreatureSummons(attacker)[1], cid, combat, -value, -value, 3) end -- return true -- end ]]></event> <event type="outfit" name="cloneoutfit" event="script"><![CDATA[ domodlib('configuracao_clone') if #getCreatureSummons(cid) < 1 or getCreatureName(getCreatureSummons(cid)[1]) ~= config.name then unregisterCreatureEvent(cid,"clone") unregisterCreatureEvent(cid,"clonecombat") unregisterCreatureEvent(cid,"cloneoutfit") else doSetCreatureOutfit(getCreatureSummons(cid)[1], current, -1) end return true ]]></event> </mod>
Reinicie o servidor (reload não funcionará) e brinque você mesmo..
(digite /clone para se clonar)
Créditos:
Draky Lucas - Desenvolvimento 100%
ThiagoBjiW - Ideia (http://www.xtibia.com/forum/topic/211695-necessito-de-ideias/)