Jump to content

Scripting [TFS 0.4] Player sendo atacado pelo próprio summon


Go to solution Solved by Garoto Prodigio,

Recommended Posts

Não sei se é padrão do game ou coisa do tipo, mas os summons que eu spawno conseguem me atacar com spells em área, alguém sabe a solução? tentei utilizar um script mas não tive êxito. Utilizo tfs 0.4 rev 3884 8.60

Link to post
Share on other sites

2 minutos atrás, 139 disse:

Ou a sua distro ta muito zoada, ou essas spells foram criadas pra causarem dano em players de fato. 

 

Poste o .lua de uma delas.

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr1 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 2, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area1 = createCombatArea(arr1)

setCombatArea(combat1, area1)

local combat10 = createCombatObject()
setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat10, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr10 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 0, 2},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
}

local area10 = createCombatArea(arr10)

setCombatArea(combat10, area10)

local combat100 = createCombatObject()
setCombatParam(combat100, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat100, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat100, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr100 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{1, 0, 0, 0, 0, 2},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
}

local area100 = createCombatArea(arr100)

setCombatArea(combat100, area100)


local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr2 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{2, 1, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area2 = createCombatArea(arr2)

setCombatArea(combat2, area2)



local combat20 = createCombatObject()
setCombatParam(combat20, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat20, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat20, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr20 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 2, 0, 1, 1, 1},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
}

local area20 = createCombatArea(arr20)

setCombatArea(combat20, area20)

local combat200 = createCombatObject()
setCombatParam(combat200, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat200, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat200, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr200 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{2, 0, 0, 0, 0, 1},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
}

local area200 = createCombatArea(arr200)

setCombatArea(combat200, area200)



local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)


local arr3 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 2, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area3 = createCombatArea(arr3)

setCombatArea(combat3, area3)

local combat30 = createCombatObject()
setCombatParam(combat30, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat30, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat30, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr30 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 2, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area30 = createCombatArea(arr30)

setCombatArea(combat30, area30)


local combat300 = createCombatObject()
setCombatParam(combat300, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat300, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat300, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr300 = {
{0, 0, 2, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
}

local area300 = createCombatArea(arr300)

setCombatArea(combat300, area300)




local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr4 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 2, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}

local area4 = createCombatArea(arr4)

setCombatArea(combat4, area4)



local combat40 = createCombatObject()
setCombatParam(combat40, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat40, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat40, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr40 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 2, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
}


local area40 = createCombatArea(arr40)

setCombatArea(combat40, area40)


local combat400 = createCombatObject()
setCombatParam(combat400, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat400, COMBAT_PARAM_EFFECT, 214)
setCombatFormula(combat400, COMBAT_FORMULA_LEVELMAGIC, -1, -320, -1, -380)

local arr400 = {
{0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 2, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
}

local area400 = createCombatArea(arr400)

setCombatArea(combat400, area400)

function hl(cid)
if getPlayerLookDir(cid) == 1 then   
                
doCombat(cid, combat1, numberToVariant(cid))
doCombat(cid, combat10, numberToVariant(cid))
doCombat(cid, combat100, numberToVariant(cid)) 

elseif getPlayerLookDir(cid) == 2 then   
               
         doCombat(cid, combat4, numberToVariant(cid))
doCombat(cid, combat40, numberToVariant(cid))
doCombat(cid, combat400, numberToVariant(cid)) 

elseif getPlayerLookDir(cid) == 3 then   
                 
         doCombat(cid, combat2, numberToVariant(cid))
doCombat(cid, combat20, numberToVariant(cid))
doCombat(cid, combat200, numberToVariant(cid)) 

elseif getPlayerLookDir(cid) == 0 then   
                 
         doCombat(cid, combat3, numberToVariant(cid))
doCombat(cid, combat30, numberToVariant(cid))
doCombat(cid, combat300, numberToVariant(cid))
  doPlayerSay(cid, 'Jutsu', TALKTYPE_ORANGE_1) 
      end
end



function ml2(cid)       
        doPlayerSay(cid, 'Jutsu', TALKTYPE_ORANGE_1)                 
            addEvent(hl,0,cid)

      end

function hl2(cid)       
        doPlayerSay(cid, 'no', TALKTYPE_ORANGE_1)                 
            addEvent(ml2,0,cid)

      end

function ml(cid)       
        doPlayerSay(cid, 'Ryukudan', TALKTYPE_ORANGE_1)                 
            addEvent(hl2,0,cid)

      end
function kl(cid)       
        doPlayerSay(cid, 'Katon', TALKTYPE_ORANGE_1)                 
            addEvent(ml,0,cid)

      end



function onCastSpell(cid, var)
      addEvent(kl,0,cid)
return true		  
end

 

Link to post
Share on other sites

  • Solution
15 horas atrás, ZeeroBR disse:

Não sei se é padrão do game ou coisa do tipo, mas os summons que eu spawno conseguem me atacar com spells em área, alguém sabe a solução? tentei utilizar um script mas não tive êxito. Utilizo tfs 0.4 rev 3884 8.60

Provavelmente é em Creaturescripts, há uns dias atrás eu também resolvi este problema, veja se resolve pra você.

 

 

Em creaturescripts.lua adicione estas duas linhas:

<event type="combat" name="SummonAntKillPlayer" event="script" value="summonantkillplayer.lua"/>

<event type="combat" name="PlayerAntKillSummon" event="script" value="playerantkillsummon.lua"/>

 

summonantkillplayer.lua      (Impede que o summon ataque o player, mesmo com ataques em area)

function onCombat(cid, target)
if isInArray(getCreatureSummons(target), cid) then
return false
end
return true
end

 

playerantkillsummon.lua         (impede que o player ataque seu summon, mesmo ataques em area)

function onCombat(cid, target)
if cid == getCreatureMaster(target) then
doPlayerSendCancel(cid, "Voce nao pode matar seu summon.")
return false
end
return true
end

 

Por fim, em data/creaturescripts/scripts/login.lua     ----> Se você não colocar, não funcionará!

Adicione:

registerCreatureEvent(cid, "PlayerAntKillSummon")
registerCreatureEvent(cid, "SummonAntKillPlayer")

 

 

 

 

image.png

Link to post
Share on other sites

4 horas atrás, Garoto Prodigio disse:

Provavelmente é em Creaturescripts, há uns dias atrás eu também resolvi este problema, veja se resolve pra você.

 

 

Em creaturescripts.lua adicione estas duas linhas:


<event type="combat" name="SummonAntKillPlayer" event="script" value="summonantkillplayer.lua"/>

<event type="combat" name="PlayerAntKillSummon" event="script" value="playerantkillsummon.lua"/>

 

summonantkillplayer.lua      (Impede que o summon ataque o player, mesmo com ataques em area)


function onCombat(cid, target)
if isInArray(getCreatureSummons(target), cid) then
return false
end
return true
end

 

playerantkillsummon.lua         (impede que o player ataque seu summon, mesmo ataques em area)


function onCombat(cid, target)
if cid == getCreatureMaster(target) then
doPlayerSendCancel(cid, "Voce nao pode matar seu summon.")
return false
end
return true
end

 

Por fim, em data/creaturescripts/scripts/login.lua     ----> Se você não colocar, não funcionará!

Adicione:


registerCreatureEvent(cid, "PlayerAntKillSummon")
registerCreatureEvent(cid, "SummonAntKillPlayer")

 

 

 

 

image.png

Tinha achado essa possível solução, mas pra mim não funciona, sem erros na distro e nem nada do tipo

Link to post
Share on other sites

22 minutos atrás, ZeeroBR disse:

Tinha achado essa possível solução, mas pra mim não funciona, sem erros na distro e nem nada do tipo

Qual a base do seu Servidor? 8.60 (sei disso) é Tibia? alternativo? fez alguma modificação? otx ou tfs?

Link to post
Share on other sites

22 minutos atrás, ZeeroBR disse:

Tinha achado essa possível solução, mas pra mim não funciona, sem erros na distro e nem nada do tipo


Se nem via creaturescripts resolve, sua source ta com alguma alteração esquisita. 
Acho que é mais fácil pegar uma versão limpa do que tentar arrumar isso :x

Link to post
Share on other sites

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 VitorDeMacedo
      Boa noite a todos, esse é meu primeiro topico aqui na TK então me desculpem se eu errar em alguma coisa nesse posts. 
       
      Qual o motivo deste tópico? [Error - CreatureScript Interface]
      Possuo um servidor de tibia "King-Fusion" nunca tive problema de erros na distro ao ligar, alguns era apenas de houses etc... Só que agora começou a da esse "ERROR" e de uma forma floodante fazendo com que o servidor "CRASHA-SE" o error é o seguinte ↓
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
      function onKill(cid) if isPlayer(cid) then setPlayerStorageValue(cid, 167912, math.max(0, getPlayerStorageValue(cid, 167912)) + 1) end return true end function onDeath(cid, corpse, deathList) local target = deathList[1] if target and isPlayer(target) then setPlayerStorageValue(cid, 167913, math.max(0, getPlayerStorageValue(cid, 167913)) + 1) end return true end  
      Por favor gente, me ajudemmmmmmmmmm!
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       


    • By Luanmax21
      Ola gostaria de um scritpt player estivese usando o item x  e ele perdece menos 50% de skills e level.
    • By Shoguns
      .Qual servidor ou website você utiliza como base? 
       
      Qual o motivo deste tópico? 
      Tenho um Script de Boost de exp e loot diário por monstro aleatório, o erro é que o monstro não é trocado, só muda quando reinicia o sv e executa a funcao startup, queria que o script tbm fizesse que o monstro fosse alterado junto com o dia
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
       
      Você tem o código disponível? Se tiver publique-o aqui: 
       
       
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • By Eycron Otp
      oiipipip
    • By stauro
      Boa tarde seus lindos, to enchendo o saco de novo.
      A Stamina passa das 14-12-10hrs e ainda continua dropando loot dos monstros e exp. Alguém sabe onde altera isso na source e como faz? Uso TFS 0.4 protocolo 8.6
      Meu config.lua está assim:
       
          rateStaminaLoss = 1
          rateStaminaGain = 3
          rateStaminaThresholdGain = 12
          staminaRatingLimitTop = 40 * 60
          staminaRatingLimitBottom = 14 * 60
          staminaLootLimit = 14 * 60
          rateStaminaAboveNormal = 1.5
          rateStaminaUnderNormal = 0.5
          staminaThresholdOnlyPremium = true
       
       
       
         
       
       
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo