Ir para conteúdo

Function Canplayerbeattacked(Cid [, Bool])


Posts Recomendados

A função faz com que um player possa ou nao ser atacado por PLAYERS. Para fazer em com que ele nao possa ser atacado por monstros voce tera que registrar o evento em todos os monstros do seu otserver, vou falar como fazer isso pra quem quizer.

 

Vá em data/lib e abra o arquivo 050-function.lua e adicione essa funçao logo na primeira linha:

 

function canPlayerBeAttacked(cid, bool)
   bool = bool == nil and true or bool
   setPlayerStorageValue(cid, 96661, bool and 0 or 1)
end

 

Agora vá em data/creaturescripts/scripts crie um arquivo .lua com o nome de playerattack.lua e bote esse script:

function onCombat(cid, target)
   if isPlayer(target) and getPlayerStorageValue(target, 96661) == 1 then
       return false
   end
   return true
end

function onAttack(cid, target)
   if isPlayer(target) and getPlayerStorageValue(target, 96661) == 1 then
       return false
   end
   return true
end

 

Agora vá no login.lua na mesma pasta e adicione essa linha antes do ultimo return true:

registerCreatureEvent(cid, "PlayerAttack")

 

Agora vá no creaturescripts.xml e adicione essas duas tags:

<event type="combat" name="PlayerAttack" event="script" value="playerattack.lua"/>
<event type="attack" name="PlayerAttack" event="script" value="playerattack.lua"/>

 

Como usar a function:

canPlayerBeAttacked(cid, false) -- Isso faz com que o player nao possa ser atacado por outros players.

canPlayerBeAttacked(cid) -- Isso faz com que o player possa ser atacado por outros players, voce pode usar true ou nada.

 

Como fazer com que os monstros tambem nao possam atacar alguem com a function:

 

Va ate o code XML do monstro e antes de </monster> voce bota isso:

<script> 
      <event name="PlayerAttack"/> 
   </script>

Link para o comentário
Compartilhar em outros sites

vc fez uma pog msm, e ainda por cima fez errado. no script vc nem usou a função, corrige isso ae pra ficar mais bunitinho

 

function canPlayerAttacked(cid, bool)
   return getPlayerStorageValue(cid, 96661, bool)
end

function onCombat(cid, target)
   if isPlayer(target) and canPlayerBeAttacked(cid, 1) then
       return false
   end
   return true
end

function onAttack(cid, target)
   if isPlayer(target) and canPlayerBeAttacked(cid, 1) then
       return false
   end
   return true
end

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

  • 3 weeks later...

canPlayerBeAttacked não retorna nada, sua dixão está confusa o certo seria setPlayerCanBeAttacked ou setPlayerAttacable.

E esta função ainda nem precisa daquela condição na variavel, trosso inutil, ele já faz a checagem do bool direto no setStorage que você colocou.

 

Mas a idéia não é das piores.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...