ZI
pedido

Sistema de Miss

Por Zikaduh, 12 de nov. de 2013 em Scripts

resolvido
otserv
tibia
16
1.9k
ZikaduhZ
12 de novembro de 2013 às 17:02

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

 

Nu77N
12 de novembro de 2013 às 17:37

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 Novembro 13 por SUJA

ZikaduhZ
12 de novembro de 2013 às 21:57

e uma creaturescript né???

qual tag deve usa???

tem que add algo na login??


??

Editado Novembro 12 por Zikaduh

Nu77N
13 de novembro de 2013 às 00:27

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")
ZikaduhZ
13 de novembro de 2013 às 22:14

não funciono deu erro no distro


9gv6.png

Editado Novembro 13 por Zikaduh

Nu77N
13 de novembro de 2013 às 22:54

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...
2 semanas depois...
ZikaduhZ
21 de novembro de 2013 às 18:48

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 Novembro 18 por Zikaduh

KilluaK
21 de novembro de 2013 às 22:50

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 Novembro 21 por amoeba13

ZikaduhZ
22 de novembro de 2013 às 18:49

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 Novembro 22 por Zikaduh

zipter98Z
22 de novembro de 2013 às 19:13

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
ZikaduhZ
22 de novembro de 2013 às 19:32

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

KilluaK
22 de novembro de 2013 às 19:56

Eu tinha esquecido mesmo de fazer essa checagem, obrigado por complementar, zipter

OmegaO
22 de novembro de 2013 às 20:25

Tópico movido para a seção de dúvidas e pedidos resolvidos.

KincaJrK
25 de novembro de 2013 às 12:40

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

ZikaduhZ
25 de novembro de 2013 às 12:48

eu ja tinha achado ai no constant. mas vlw.