Ir para conteúdo

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


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

Link para o comentário
Compartilhar em outros sites

  • 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?

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...