DR
sistema

Sistema de Clone v 1.0 by Draky Lucas 09/04/2013

Por drakylucas, 09 de abr. de 2013 em Mods, funções e outros

otserv
tibia
script
5.0 (1)
10
2.4k
drakylucasD
09 de abril de 2013 às 14:58

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/)

ThiagoBjiT
09 de abril de 2013 às 15:12

A ideia eu tive do nada. Muito bom o sistema, parabéns!

(Obrigado por colocar o crédito da minha parte *-*)

 

Outra coisa que não sei se tem ai, mas, seria bom se pode-se clonar no máximo 1x, por que tipo, não sei se ai dá pra clonar vários do mesmo.

 

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

drakylucasD
09 de abril de 2013 às 15:29

ja está para clonar 1 só ^^

GorennG
09 de abril de 2013 às 17:05

Nossa que maneiro man !! qual versão de tibia ? 8.6 ?

drakylucasD
09 de abril de 2013 às 17:06

testado com TFS 0.4 rev 3884 (8.60)

 

qualquer servidor acima dele funcionará..

o TFS 0.3.6 provavelmente não funcionará (nao existe unregisterCreatureEvent em 0.3.6)

ThiagoBjiT
09 de abril de 2013 às 17:06

ja está para clonar 1 só ^^

 

Então tá de boa :)

 

 

Nossa que maneiro man !! qual versão de tibia ? 8.6 ?

 

Funciona em 8.60, sim!

RoksasR
09 de abril de 2013 às 17:09

Muito legal, obrigado por trazer o conteúdo ao Éks :)

1 mês depois...
Cell18C
08 de maio de 2013 às 03:58

Legal, interessante... Parabéns!

 

Gostaria de mudar esse tempo para o clone sumir de 2 minutos para 30 segundos

Posso alterar o /clone ??

 

<talkaction words="/clone"

 

para outra palavra sem usar "/" ??

 

e só com premium poder utilizar, tem como vc colocar isso pra mim?

 

seria possivel?

drakylucasD
11 de maio de 2013 às 22:37

sim, voce pode alterar a palavra..

 

depois disso:

domodlib("configuracao_clone")
if #getCreatureSummons(cid) >= 1 then
 return doPlayerSendCancel(cid,"voce nao pode ter summons para se clonar")
    end

 

coloque isso:

if not isPremium(cid) then
 return doPlayerSendCancel(cid,"Voce precisa ser premium. Sorry.")
end

 

PS: tou meio fora do xtibia ultimamente.. falta-me tempo (escola e muitos rolês kkk)... dps corrijo os bugs do meu outro sistema, e ja vejo se preparo alguma coisinha aqui

Cell18C
14 de maio de 2013 às 11:24

Massa...

 

E o tempo?

 

de 2 minutos para 30 segundos...

 

 

 

tempo = 2*60*1000, -- em milisegundos, pra remover o clone (está 2 minutos)

 

 

tempo = 1*30*1000, -- Vai funcionar? =x

Editado Maio 14 por Cell18