Jump to content

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By 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.
    • By Cerberus
      Versão testada : 8.6
       
      a TAG tem 2 tipos uma com % da mana e outra com valor fixo, vou disponibilizar as 2 tags vc escolhe o que preferir.
      <!-- Custom AVP Spells --> <instant name="SumonScript " words="Msg que vai sumonar você escolhe" lvl="lvl minimo para usar" maglv="ml para usar" manapercent="quanto gasta de mana em porcentagem 1,20,50,100" exhaustion="2000" needlearn="0" event="script" value="summon/summon_script.lua"> <vocation id="1"/>-- vocations do server que pode usar a magia , mecha de acordo com sua vontade <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> </instant> ou essa TAG
      <!-- Custom AVP Spells --> <instant name="SummonScript" words="msg" lvl="40" maglv="ml para usar" mana="100" exhaustion="2000" needlearn="0" event="script" value="summon/Gnomo.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> </instant>  
      segue abaixo o lua. criei arquivo chamado summon_script.lua dentro da pasta data/spells/summon
      Versão 1.2 do script (update) -- seguindo problema indicado pelo @KotZletY  atualizei o script..
       
      Agora o summon prefiro deixa a escolha de vocês so por o nome do monstro do seu servidor lem cima na tabela t.summon
      eu puis o nome do demon uma creatura do tibia.
    • By Rogex Joyz
      Fala galeritcha, este script imita o ''martelo de Thor'', ele funciona da seguinte forma: Após o knight falar a magia (no meu caso exori hur), um martelo vai girando em linha reta de acordo com o lado em que o player estiver virado. O martelo vai em efeito de boomerang, ele vai e volta para o dono da magia dando ataque em todos que estão no caminho, o dano é duplicado (são 2 danos), uma vez que 1 dano corresponde à ida e outro corresponde ao do martelo voltando.  0.x - 
      unknown credits, enjoy. Praticamente as principais coisas são editáveis dentro do script logo no começo, deixarei escrito dentro dele para ficar mais fácil. Let's go ?
      Em spells/scripts/attack coloque: 
       
      local config = { distance = 6, -- distância em que o martelo irá chegar (no caso ele está configurado para percorrer 6 sqm's e depois voltar) distEffect = 25, -- efeito que irá causar. Fale /x ingame junto com um número e veja os efeitos que mais te agrada, depois só substituir o 25 pelo número do efeito escolhido. No caso o efeito que eu escolhi é justamente de um martelo. minDamage = 200, --Qual o dano mínimo que você deseja que esta magia tire ? maxDamage = 500, -- Qual o dano máximo que você deseja que esta magia tire ? - Lembrando que são dois danos distintos de ida e outro de volta interval = 750 -- Após soltar a magia, quanto tempo levará para o martelo retornar para você ? - Coloque o tempo em milésimos de segundos } function getPosisBetween(fromPos, toPos) local posis = {} for i = 1, getDistanceBetween(fromPos, toPos) do local choices = {fromPos.x, fromPos.x + 1, fromPos.x - 1} if fromPos.x ~= toPos.x then table.sort(choices, function(a, b) if fromPos.x - toPos.x < 0 then return a > b else return a < b end end) fromPos.x = choices[1] end if fromPos.y ~= toPos.y then choices = {fromPos.y, fromPos.y + 1, fromPos.y - 1} table.sort(choices, function(a, b) if fromPos.y - toPos.y < 0 then return a > b else return a < b end end) fromPos.y = choices[1] end table.insert(posis, {x = fromPos.x, y = fromPos.y, z = fromPos.z}) end return posis end function onCastSpell(cid) local playerPos = getThingPos(cid) local toPos = { [0] = {x = playerPos.x, y = playerPos.y - config.distance, z = playerPos.z}, [1] = {x = playerPos.x + config.distance, y = playerPos.y, z = playerPos.z}, [2] = {x = playerPos.x, y = playerPos.y + config.distance, z = playerPos.z}, [3] = {x = playerPos.x - config.distance, y = playerPos.y, z = playerPos.z} } local spellToPos = toPos[getCreatureLookDirection(cid)] local posis = getPosisBetween(getThingPos(cid), spellToPos) doSendDistanceShoot(getThingPos(cid), spellToPos, config.distEffect) for i = 1, #posis do if not getTileInfo(posis[i]).protection then local pid = getTopCreature(posis[i]).uid if isMonster(pid) or isPlayer(pid) then doTargetCombatHealth(cid, pid, COMBAT_PHYSICALDAMAGE, -config.minDamage, -config.maxDamage, -1) end end end addEvent(function() if not isPlayer(cid) then return true end doSendDistanceShoot(spellToPos, getThingPos(cid), config.distEffect) posis = getPosisBetween(spellToPos, getThingPos(cid)) for i = 1, #posis do if not getTileInfo(posis[i]).protection then local pid = getTopCreature(posis[i]).uid if isMonster(pid) or isPlayer(pid) then doTargetCombatHealth(cid, pid, COMBAT_PHYSICALDAMAGE, -config.minDamage, -config.maxDamage, -1) end end end end, config.interval) return true end Em spells.xml coloque:
      <instant name="Whirlwind Throw" words="exori hur" lvl="200" mana="500" prem="1" needweapon="1" range="5" needtarget="1" blockwalls="1" exhaustion="1800" maglv="7" needlearn="0" script="attack/Whirlwind Throw.lua">
              <vocation id="4"/>
              <vocation id="8"/>
       
      -- em words = o nome que deverá ser dito para soltar a spell
          mana = quanto de mana gastará ?
          needweapon = precisa estar equipado com uma arma para soltá-la ?
         range = configurável dentro do script
         needtarget = Precisa estar targetando alguém para soltar esta magia ? - Lembrando que caso coloque ''1'', precisará targetar um alvo para soltar a spell, porém isso não influencia na direção da magia. Ela soltará para onde o personagem estiver virado, como um exevo gran vis lux por exemplo.
         maglv = Qual o magic level necessário para conjurar esta magia ?
       
      Espero que divirta bastante gente, eu dei uns berro aqui quando vi ela em pratica haha. See you !
       

    • By LeoTK
      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)
    • By Fabi Marzan
      Oi galera, estou procurando em criar um spell que na mudanca do posicao, sai outro efeito,
       
      Ejemplo

       
       
      Tenho um scripts semelhante, nao tem em Target so em area. Quero trocar pra Target.
      local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) local arr1 = { {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 2}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, } local area1 = createCombatArea(arr1) setCombatArea(combat1, area1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 300) local arr2 = { {1, 2}, } local area2 = createCombatArea(arr2) setCombatArea(combat2, area2) local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end function spell3(cid) if getCreatureLookDirection(cid) == 1 then --DERECHA doCombat(cid, combat2, numberToVariant(cid)) end end function spell4(cid) if getCreatureLookDirection(cid) == 1 then --DERECHA doCombat(cid, combat2, numberToVariant(cid)) end end function test(cid) addEvent(spell3,100,cid) --DERECHO addEvent(spell4,100,cid) --DERECHO end function test2(cid) addEvent(test,0,cid) end function onCastSpell(cid, var) local waittime = 0.0 -- Tempo de exhaustion local storage = 1 -- não mecha if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "You are exhausted.") return false end local parameters = {cid = cid, var = var, combat1 = combat1 , combat2 = combat2} for i = 1, 1 do addEvent(function() if isCreature(cid) then addEvent(onCastSpell2, 100, parameters) end end, 1 + ((i-1) * 650)) end addEvent(test2,0,cid) exhaustion.set(cid, storage, waittime) return TRUE end  
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo