Ir para conteúdo

Item que deixa INVISÍVEL de players e monsters


DuuhCarvalho

Posts Recomendados

Eae pessoal,
Fiz esse script apenas para ajudar um membro, porém nunca vi nada parecido aqui, resolvi postar. É bem simples, mas da para fazer muita coisa legal.
Quem quiser qualquer alteração como condição para usar, mudar para talkactions, etc... é só pedir no tópico.

 

Basicamente é só dá use no item, que você fica invisível para players e monsters, por determinado tempo.

 

Vamos usar CONDITION, porém só funciona se o player que usar o item, tiver group id maior que os outros, para que fique invisível. Mas nosso amigo @caotic vai nos ensinar a mudar isso:
 

Em 25/11/2016 at 13:19, caotic disse:

Em player.cpp procure void Player::sendCreatureChangeVisible(const Creature* creature, Visible_t visible) 

Abaixo retira a seguinte condição:


    if(player == this || (player && (visible < VISIBLE_GHOST_APPEAR || getGhostAccess() >= player->getGhostAccess()))
        || (!player && canSeeInvisibility()))
        sendCreatureChangeOutfit(creature, creature->getCurrentOutfit());

E substitua por :


    if(player == this || (!player && canSeeInvisibility()))
        sendCreatureChangeOutfit(creature, creature->getCurrentOutfit());

 

Depois procure bool Player::canSeeCreature(const Creature* creature) const em player.cpp 

E retire essa linha:


    if(const Player* player = creature->getPlayer())
        return !player->isGhost() || getGhostAccess() >= player->getGhostAccess();

E coloque essa no lugar:


	if(const Player* player = creature->getPlayer())
		return !player->isGhost();

 

 

Faça isso e independente do seu grupo você vai fica invisível para todos.

agora vá em data/actions/scripts e crie uma arquivo.lua, e cole isso dentro:

local tempo = 1 -- tempo que o player vai ficar invisivel em segundos.
local ghost = createConditionObject(CONDITION_GAMEMASTER, 1000*tempo, false, GAMEMASTER_INVISIBLE)
local outfit = createConditionObject(CONDITION_INVISIBLE, 1000*tempo, false)
function onUse(cid, item)
if not isPlayerGhost(cid) then
   doRemoveItem(item.uid, 1)
   doSendMagicEffect(getCreaturePosition(cid), 12)
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você está invisivel, agora ninguem pode te ver.")
   doAddCondition(cid, ghost)
   doAddCondition(cid, outfit)
else
   doPlayerSendCancel(cid, "Você já está invisivel.")
   doSendMagicEffect(getCreaturePosition(cid), 2)
end
return true
end

depois vá em data/actions/actions.xml e adicione a tag:

 

<action itemid="IDdoITEM" script="NomeDoArquivo.lua"/>

pronto.

 

Como falei é bem simples, qualquer coisa é só pedir...

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

Valeu pela ajuda cara... Agora deu certo eu criar uma capa de invisibilidade, tem como arrumar para min? poder usar apenas se estiver sem BATTLE? E tambem tem o npc la depois da uma olhada VLWS <3

REP+

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

1 hora atrás, sexosix disse:

Valeu pela ajuda cara... Agora deu certo eu criar uma capa de invisibilidade, tem como arrumar para min? poder usar apenas se estiver sem BATTLE? E tambem tem o npc la depois da uma olhada VLWS <3

REP+

 

é apenas para adicionar a condição de battle?

 

::

local tempo = 1 -- tempo que o player vai ficar invisivel em segundos.local ghost = createConditionObject(CONDITION_GAMEMASTER, 1000*tempo, false, GAMEMASTER_INVISIBLE)local outfit = createConditionObject(CONDITION_INVISIBLE, 1000*tempo, false)function onUse(cid, item)if not isPlayerGhost(cid) then   if getCreatureCondition(cid, CONDITION_INFIGHT) == FALSE then      doRemoveItem(item.uid, 1)      doSendMagicEffect(getCreaturePosition(cid), 12)      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você está invisivel, agora ninguem pode te ver.")      doAddCondition(cid, ghost)      doAddCondition(cid, outfit)   else      doPlayerSendCancel(cid, "Voce esta com Battle.")      doSendMagicEffect(getCreaturePosition(cid), 2)     endelsedoPlayerSendCancel(cid, "Voce ja está invisivel.")doSendMagicEffect(getCreaturePosition(cid), 2)endreturn trueend

 

vou ver lá o npc.

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

4 horas atrás, DuuhCarvalho disse:

 

é apenas para adicionar a condição de battle?

 

::

local tempo = 1 -- tempo que o player vai ficar invisivel em segundos.local ghost = createConditionObject(CONDITION_GAMEMASTER, 1000*tempo, false, GAMEMASTER_INVISIBLE)local outfit = createConditionObject(CONDITION_INVISIBLE, 1000*tempo, false)function onUse(cid, item)if not isPlayerGhost(cid) then   if getCreatureCondition(cid, CONDITION_INFIGHT) == FALSE then      doRemoveItem(item.uid, 1)      doSendMagicEffect(getCreaturePosition(cid), 12)      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você está invisivel, agora ninguem pode te ver.")      doAddCondition(cid, ghost)      doAddCondition(cid, outfit)   else      doPlayerSendCancel(cid, "Voce esta com Battle.")      doSendMagicEffect(getCreaturePosition(cid), 2)     endelsedoPlayerSendCancel(cid, "Voce ja está invisivel.")doSendMagicEffect(getCreaturePosition(cid), 2)endreturn trueend

 

vou ver lá o npc.

Obrigado... o item agora esta perfeito <3

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...