Ir para conteúdo
  • Cadastre-se

Spell TFS 0.X [System Ghost] Complementação Sem Debug


Posts Recomendados

Salve galera bom recentemente tentei usar a spell ghost que tem disponível aqui no fórum porém estava tomando debug então descobri a solução e vou compartilhar com vocês.

 

Função da spell dar ghost de ADM para jogadores por um tempo

 

Tópico da spell

 

 

Vai ser necessário alteração na source

 

Procure por player.cpp

Dentro da biblioteca pesquise por isso

void Player::sendCreatureChangeVisible(const Creature* creature, Visible_t visible)
{
    if(!client)
        return;

    const Player* player = creature->getPlayer();
    if(player == this || (player && (visible < VISIBLE_GHOST_APPEAR || getGhostAccess() >= player->getGhostAccess()))
        || (!player && canSeeInvisibility()))
        sendCreatureChangeOutfit(creature, creature->getCurrentOutfit());
    else if(visible == VISIBLE_DISAPPEAR || visible == VISIBLE_GHOST_DISAPPEAR)
        sendCreatureDisappear(creature, creature->getTile()->getClientIndexOfThing(this, creature));
    else
        sendCreatureAppear(creature);
}

Vocês vão trocar essa parte

 

getGhostAccess() >= player->getGhostAccess()))

Por isso

 

(getAccess() > 2 && getGhostAccess() >= player->getGhostAccess())))

 

Depois vão procurar por isso

bool Player::canSeeCreature(const Creature* creature) const
{
    if(creature == this)
        return true;

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

    return !creature->isInvisible() || canSeeInvisibility();
}

Edite essa linha

getGhostAccess() >= player->getGhostAccess();

Por essa

 

(getAccess() > 2 && getGhostAccess() >= player->getGhostAccess());

Agora basta compilar a source.

 

Porém precisamos configurar a flag de tutor para não haver problemas quando o player recebe-la

 

eu utilizo dessa forma

<group id="2" name="Tutor" flags="2621696" access="1"/>

Mas pode ser alterada para forma que quiserem usando o site

My-Acc.Org

 

obs: deixe sempre em acess="1"

 

Pronto basta compilar e usar a spell de ghost

 

Créditos

@TheKronOs

@abugaduniga

heba(otland)

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
9 minutos atrás, LeoTK disse:

Salve galera bom recentemente tentei usar a spell ghost que tem disponível aqui no fórum porém estava tomando debug então descobri a solução e vou compartilhar com vocês.

 

Função da spell dar ghost de ADM para jogadores por um tempo

 

Tópico da spell

 

 

Vai ser necessário alteração na source

 

Procure por player.cpp

Dentro da biblioteca pesquise por isso


void Player::sendCreatureChangeVisible(const Creature* creature, Visible_t visible)
{
    if(!client)
        return;

    const Player* player = creature->getPlayer();
    if(player == this || (player && (visible < VISIBLE_GHOST_APPEAR || getGhostAccess() >= player->getGhostAccess()))
        || (!player && canSeeInvisibility()))
        sendCreatureChangeOutfit(creature, creature->getCurrentOutfit());
    else if(visible == VISIBLE_DISAPPEAR || visible == VISIBLE_GHOST_DISAPPEAR)
        sendCreatureDisappear(creature, creature->getTile()->getClientIndexOfThing(this, creature));
    else
        sendCreatureAppear(creature);
}

Vocês vão trocar essa parte

 


getGhostAccess() >= player->getGhostAccess()))

Por isso

 


(getAccess() > 2 && getGhostAccess() >= player->getGhostAccess())))

 

Depois vão procurar por isso


bool Player::canSeeCreature(const Creature* creature) const
{
    if(creature == this)
        return true;

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

    return !creature->isInvisible() || canSeeInvisibility();
}

Edite essa linha


getGhostAccess() >= player->getGhostAccess();

Por essa

 


(getAccess() > 2 && getGhostAccess() >= player->getGhostAccess());

Agora basta compilar a source.

 

Porém precisamos configurar a flag de tutor para não haver problemas quando o player recebe-la

 

eu utilizo dessa forma


<group id="2" name="Tutor" flags="2621696" access="1"/>

Mas pode ser alterada para forma que quiserem usando o site

My-Acc.Org

 

obs: deixe sempre em acess="1"

 

Pronto basta compilar e usar a spell de ghost

 

Créditos

Kronos

@abugaduniga

heba(otland)

 

Muito bom, irei usar. ^ ^ 

                                                                             1535210279_tumblr_o9b6yoxM1Z1tco8kto1_500(3).gif.f527686e19da738322c39555244decac.gif

                                                             Meus tópicos         

                                                         Se ajudei você deixe seu Rep! para fortalecer a amizade ^^

                                                                              Vamos ajudar o fórum a crescer mais.

                                                                          1641206641_gif-escudo-fla-3d(1).gif.a5d3c0c24824d5272a181aa91c5eda0c.gif

                                                                                                Mengão porra! . .

                                                                     tumblr_oxm8eriUeU1sqwgnro2_400.gif.22e347b2fc58fdfd88dbf84f4bdaa1bc.gif

                                                                                ----- NPC que vende informação -----

                                                                           -----Baú Que dá Outfit se tiver Level -----

                                                                     ----- [Npc] Que vende Stones (itens) por diamonds -----

 

 

                                                                       

                       

Link para o post
Compartilhar em outros sites
  • 10 months later...

@LeoTK Funcionando sem nenhum erro, o problema é que se eu uso ghost com o adm, ele vira player. já coloquei a flag como você deixou.

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<groups>
	<group id="1" name="Player"/>
	<group id="2" name="Tutor" flags="2621696" customFlags="2" access="1" violationReasons="4" nameViolationFlags="2"/>
	<group id="3" name="Senhor Tutor" flags="68736352256" customFlags="14" access="2" violationReasons="10" nameViolationFlags="2" statementViolationFlags="63" maxVips="200"/>
	<group id="4" name="Gamemaster" flags="3808558964575" customFlags="257215" access="3" violationReasons="19" nameViolationFlags="10" statementViolationFlags="69" depotLimit="3000" maxVips="300" outfit="295"/>
	<group id="5" name="Auxiliar Administrativo" flags="3840774348794" customFlags="781823" access="4" violationReasons="23" nameViolationFlags="42" statementViolationFlags="213" depotLimit="4000" maxVips="400" outfit="361"/>
	<group id="6" name="Administrador" flags="3845069447162" customFlags="2097151" access="5" violationReasons="23" nameViolationFlags="426" statementViolationFlags="469" depotLimit="5000" maxVips="500"/>
</groups>

 

E teria como mostrar uma mensagem verde em cima do player tipo (invisivel por x tempo)

Link para o post
Compartilhar em outros sites

@diarmaint se você usar a spell com o adm ele vai virar player mesmo é o que o script faz ele muda o cargo para o cargo que possa utilizar o ghost e depois volta o jogador para o cargo de player como eu utilizo o segundo cargo que também não tem nenhum comando não tem problema mas é normal que o adm se torne player porque é assim que o script esta programado para fazer

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
3 minutos atrás, LeoTK disse:

@diarmaint se você usar a spell com o adm ele vai virar player mesmo é o que o script faz ele muda o cargo para o cargo que possa utilizar o ghost e depois volta o jogador para o cargo de player como eu utilizo o segundo cargo que também não tem nenhum comando não tem problema mas é normal que o adm se torne player porque é assim que o script esta programado para fazer

Ahh bom, entendido.

vc tem conhecimento de script pra ajudar nessa parte?

E teria como mostrar uma mensagem verde em cima do player tipo (invisivel por x tempo) tbm precisaria que soltasse x effect e que ele não pudesse usar nenhuma outra magia até sair do ghost.

Editado por diarmaint (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por L3K0T
      SUMMON SPELLS
       
       
      Como o nome diz é uma spell que sumona até 4 monstros ou podendo adicionar mais, legal pra naruto etc... Então para não perder ou ficar em vão, irei deixar pra vocês e já com as correções.
       
       
      DEMONSTRAÇÃO

      2022-09-01 00-08-30.mp4  
       
      INSTALANDO
      1: primeiro vá em data/spells/scripts e crie um arquivo.lua e adicione isso abaixo dentro dele e em seguida salve.
      function onCastSpell(cid, var) local from,to = {x=962, y=885, z=7},{x=973, y=892, z=7} local from2,to2 = {x=979, y=901, z=7},{x=991, y=905, z=7} local dir = getPlayerLookDir(cid) local ppos = getPlayerPosition(cid) if(dir==1)then ppos.x = ppos.x + 1 elseif(dir==2)then ppos.y = ppos.y + 1 elseif(dir==3)then ppos.x = ppos.x - 1 elseif(dir==0)then ppos.y = ppos.y - 1 end local summon = getCreatureSummons(cid) local MaximoSummon = 0 if isInRange(getCreaturePosition(cid), from, to) or isInRange(getCreaturePosition(cid), from2, to2) then doPlayerSendCancel(cid, "Você não pode usar Summons Aqui!") return false end if (table.maxn(summon) > MaximoSummon) then doPlayerSendTextMessage(cid, 22, "Voce ainda tem summons em batalha!") return false end local clone1 = doConvinceCreature(cid, doCreateMonster("Morgaroth", ppos)) local clone2 = doConvinceCreature(cid, doCreateMonster("Demon", ppos)) local clone3 = doConvinceCreature(cid, doCreateMonster("Terror Bird", ppos)) local clone4 = doConvinceCreature(cid, doCreateMonster("Giant Spider", ppos)) doPlayerSendTextMessage(cid, 22, "Voce summonou 4 criaturas!") end  
       
      2: agora vá em data/spells/ e abra o arquivo spells.xml e coloca isso dentro e salve
       
      <instant name="Sumonar" words="!help" lvl="0" mana="0" aggressive="0" params="1" exhaustion="1000" needlearn="0" event="script" value="arquivo.lua"> </instant>  

      2022-09-01 00-28-08.mp4 Pronto! agora é só usar a imaginação, pode adicionar monstro diferente ou do mesmo quantas vezes quiser.
       
      créditos fonte: @Lenilson e L3K0T
       
       
       
       
       
    • Por Kazuya9629
      como eu fasso pro charmander usa spell Ember ea outfit dele mudar por alguns segundos
       
      base poke jornadas 
    • Por Juliet
      Bom dia, alguém conseguiria criar uma spell para reduzir o dano recebido em 50%, TFS 0.4
    • Por Kyle Bellini
      E aí, pessoal!
       
      Esses dias eu estava na vibe Harry Potter e antes de dormir acabei tendo a ideia de fazer uma spell inspirada na magia Piertotum Locomotor. Criei ela, e decidi compartilhar com vocês auhauah
       
      Funcionamento:
      Dois golems serão invocados e aprisionarão o inimigo com pedras durante um certo período. (R.I.P qualidade)
       

       
      Vamos ao código (deixei alguns comentários explicando, mas está bem fácil de compreender o funcionamento, se tiver alguma dúvida pode comentar no tópico).
      Primeiro, crie um arquivo.lua, e cole o script dentro:
       
      Feito isso, no arquivo spells.xml recomendo que deixem o parâmetro (needtarget="1"). Exemplo de tag:
      <instant name="Piertotum Locomotor" words="Piertotum Locomotor" lvl="200" mana="1000" needtarget="1" prem="0" exhaustion="10000" groups="1,1500" icon="87" needlearn="0" event="script" value="hogwarts/piertotum locomotor.lua"> <vocation id="1"/> <vocation id="2"/> </instant>  
    • Por xWhiteWolf
      Fala pessoal do TK, hoje vim trazer uma spell bem bonita que veio na minha cabeça.
      em 14:06 desse vídeo dá pra ver oque eu tentei criar
      http://tvuol.uol.com.br/video/avatar--livro-3-fogo--ep-48--a-manipuladora-de-fantoches-04028C98306ED8A90326/
      mas por conta dos efeitos precários que o Tibia possui não ficou tão legal qnt eu imaginei mas em todo caso eu decidi compartilhar o código com vocês.

      O resultado final foi esse daqui:


      Se vocês se interessaram é só criar um arquivo em spells/scripts e colocar isso daqui dentro dele:
      function onCastSpell(cid, var) local config = { spins = 1, delay = 120 } local k = checkGroundInArray(getPositionsByDirection(cid), grass) if #k < 1 then doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) doPlayerSendCancel(cid, "You need to be around grass to cast this spell.") return false end for i = 1, #k do addEvent(function() if isPlayer(cid) then local pos = k[i] local grama = getThingFromPos(pos) doTransformItem(grama.uid, driedgrass[math.random(1, #driedgrass)]) a = (i < 9) and doSendMagicEffect(pos, 1) or doSendMagicEffect(pos, 53) doSendDistanceShoot(pos, getThingPos(cid), 36) end end, (config.delay/2) * i) end range = #k > 4 and 7 or 5 addEvent(function() if isPlayer(cid) then local pos = k[i] local lastPos = false for i = 1, range do local position = getPositionByDirection(getCreaturePosition(cid), getCreatureLookDirection(cid), i) if isWalkable(position, false, true, true) then local creature = getTopCreature(position) if (creature.uid > 0) then doSendDistanceShoot(getCreaturePosition(cid), getCreaturePosition(creature.uid), 36) doTargetCombatHealth(cid, creature.uid, COMBAT_PHYSICALDAMAGE, -142 * (#k - 1), -150 * (#k - 1), CONST_ME_NONE) break end lastPos = position end if lastPos then doSendDistanceShoot(getCreaturePosition(cid), lastPos, 36) end end end end, (config.delay + (4 * config.delay * config.spins)) ) addEvent(function() for j = 1, #k do addEvent(function() local pos = k[j] local grama = getThingFromPos(pos) if isInArray(driedgrass, grama.itemid) then doTransformItem(grama.uid, grass[math.random(1, #grass)]) end end, (config.delay/2) * j) end end, config.delay * 100) spinRotate(cid, config.spins, config.delay) return true end e em spells.xml vc adiciona:
      <instant name="TK" words="kataras sense" lvl="8" mana="35" prem="0" casterTargetOrDirection="1" exhaustion="1500" needlearn="0" event="script" value="nomedoarquivo.lua"> </instant> OBS: Note que esse script usa funções da new library. Você pode conseguir essas funções aqui: http://www.tibiaking.com/forum/topic/46015-new-library-v-10/

      Espero que tenham curtido, esse é só o começo! Testada em TFS 0.3.6 Tibia 8.54.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo