Ir para conteúdo
  • 0

Sistema de Miss


Zikaduh

Pergunta

Ola Xtibia eu uso o TFS 0.4 3884

eu preciso de um sistema que dependendo do seu skill de shielding podera da MISS quando um bicho te ataca ou player ataca avera chance de da MISS (Attack falha)

Tipo :

Se seu skill de shielding for 20 tera 5% de chance de da MISS

Se seu skill de shielding for 30 tera 10% de chance de da MISS

Se seu skill de shielding for 60 tera 30% de chance de da MISS

 

Quando não acerta o attack ai aparece MISS em azul em cima do player.

Quem me ajuda darei 3 Rep++

por favor to precisando ugente

 

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Não testei...

 

local SKILL_ID = 0 -- id do skill...

local function showSkill(cid)
local skills = {
[{10, 20}] = 10, -- chance de dar miss...
[{21, 30}] = 20,
[{31, 40}] = 30,
[{31, 40}] = 40,
[{41, math.huge}] = 50
}

        for var, ret in pairs(t) do
                if getPlayerSkillLevel(cid, SKILL_ID) >= var[1] and getPlayerSkillLevel(cid, SKILL_ID) <= var[2] then
                        return ret
                end
        end
end

function onStatsChange(cid, attacker, type, combat, value)
local COLOR_ID = 200 -- cor do texto...
local CHANCE = 100 -- chance max do player dar miss / 100 = 1 em 100 / 1000 = 1 em 1000...
local showMagicEffect = true -- vai mostrar magic effect? / true = sim / false = nao...
local MAGIC_EFFECT = 1 -- id do magic effect caso true...

        if not isCreature(cid) then
                return true
        end

        if combat ~= COMBAT_HEALING then
                if showSkill(cid) > math.random (1, CHANCE) then
                        if showMagicEffect == true then
                                doSendMagicEffect(getCreaturePosition(cid), MAGIC_EFFECT)
                        end
                        doSendAnimatedText(getCreaturePosition(cid), "MISS!", COLOR_ID)
                        return false
                end
        end
        return true
end

Só configurar aonde está escrito.

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

  • 0

Sim é um creaturescript, você precisa registrar em creaturescripts.xml e login.lua:

 

creaturescripts.xml:

<event type="statschange" name="CombatMiss" event="script" value="nomedoscript.lua"/>

login.lua:

registerCreatureEvent(cid, "CombatMiss")
Link para o comentário
Compartilhar em outros sites

  • 0

troca essas duas linhas:

local showMagicEffect == true -- vai mostrar magic effect? / true = sim / false = nao...
local MAGIC_EFFECT == 1 -- id do magic effect caso true...

por:

local showMagicEffect = true -- vai mostrar magic effect? / true = sim / false = nao...
local MAGIC_EFFECT = 1 -- id do magic effect caso true...
Link para o comentário
Compartilhar em outros sites

  • 0

desculpa a demora tava sem net ,agora ta sem error na hora de entra mas quando o bixo me ataca da esse erro no distro.

w1h2.png

 

alguem pode me ajuda com esse erro?


suja kd vc


suja kd vc

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

  • 0

Visto que o SUJA nao ta entrando pra te responder, eu modifiquei um pouco o script. Testa ai

local SKILL_ID = 0 -- id do skill...

local skills = {
    {min = 10, max = 20, chance = 10}, -- chance em % de dar miss...
    {min = 21, max = 30, chance = 20},
    {min = 31, max = 40, chance = 30},
    {min = 41, max = 50, chance = 40},
    {min = 51, max = math.huge, chance = 50}
}

function onStatsChange(cid, attacker, type, combat, value)
    local COLOR_ID = 200 -- cor do texto
    local MAGIC_EFFECT = 1 -- id do magic effect 

    if not isCreature(cid) then
        return false
    end

    for _, tudo in pairs(skills) do
        if getPlayerSkillLevel(cid, SKILL_ID) >= tudo.min and getPlayerSkillLevel(cid, SKILL_ID) <= tudo.max then
            local chancex = math.random(1, 100)
            if chancex <= tudo.chance then
                if combat ~= COMBAT_HEALING then
                    doSendMagicEffect(getCreaturePosition(cid), MAGIC_EFFECT)
                    doSendAnimatedText(getCreaturePosition(cid), "MISS!", COLOR_ID)
                    doPlayerSendCancel(attacker, ""..getCreatureName(cid).." desviou do seu ataque!")
                    return false
                end
            end
        end
    end
    return true
end
Editado por amoeba13
Link para o comentário
Compartilhar em outros sites

  • 0

ta funcionando certinho agora. so que quando o bixo me ataka funciona so que da esse erro sempre que da miss

 

arkb.png

 

como ageitar isso?? por ser a distro, com add essa função??? qual e o id do shielding e 0??.... kkkk

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

  • 0

Tenta assim:

 

local SKILL_ID = 0 -- id do skill...
 
local skills = {
    {min = 10, max = 20, chance = 10}, -- chance em % de dar miss...
    {min = 21, max = 30, chance = 20},
    {min = 31, max = 40, chance = 30},
    {min = 41, max = 50, chance = 40},
    {min = 51, max = math.huge, chance = 50}
}
 
function onStatsChange(cid, attacker, type, combat, value)
    local COLOR_ID = 200 -- cor do texto
    local MAGIC_EFFECT = 1 -- id do magic effect 
 
    if not isCreature(cid) then
        return false
    end
 
    for _, tudo in pairs(skills) do
        if getPlayerSkillLevel(cid, SKILL_ID) >= tudo.min and getPlayerSkillLevel(cid, SKILL_ID) <= tudo.max then
            local chancex = math.random(1, 100)
            if chancex <= tudo.chance then
                if combat ~= COMBAT_HEALING then
                    doSendMagicEffect(getCreaturePosition(cid), MAGIC_EFFECT)
                    doSendAnimatedText(getCreaturePosition(cid), "MISS!", COLOR_ID)
                    if isPlayer(attacker) then
                        doPlayerSendCancel(attacker, ""..getCreatureName(cid).." desviou do seu ataque!")
                    end
                    return false
                end
            end
        end
    end
    return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

Boa zipter a script funciono.

ganho rep xD

Amoeba e suja obrigado vc tambem.

podem move o topico


amoeba e suja depois eu te do rep pq to sem hoje.


@edit o id do shield e 0 mesmo ou e outro

Link para o comentário
Compartilhar em outros sites

  • 0

Boa zipter a script funciono.

ganho rep xD

Amoeba e suja obrigado vc tambem.

podem move o topico

amoeba e suja depois eu te do rep pq to sem hoje.

@edit o id do shield e 0 mesmo ou e outro

 

Não.. O skill do shield é 5 se não me engano.. Vê a lista ai:

SKILL_FIRST = 0

SKILL_CLUB = 1

SKILL_SWORD = 2

SKILL_AXE = 3

SKILL_DISTANCE = 4

SKILL_SHIELD = 5

SKILL_FISHING = 6

SKILL__MAGLEVEL = 7

SKILL__LEVEL = 8

SKILL__EXPERIENCE = 9

 

você encontra em data\lib\000-constant.lua no seu ot^^, espero ter ajudado positivo.gif

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...