Ir para conteúdo

Posts Recomendados

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

Link para o comentário
https://xtibia.com/forum/topic/211736-sistema-de-clone-v-10-by-draky-lucas-09042013/
Compartilhar em outros sites

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

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)

  • 4 weeks later...

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?

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

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 por Cell18
×
×
  • Criar Novo...