Dodge System

RigBy
Por RigBy
em Globalevents e Spells

RigBy

Katrina? Romero Brito?
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 05/02/14Posts: 411Gênero: MasculinoChar no Tibia: Zeh Sergipano

Dodge System

Introdução:

- Fiz esse sistema pra ajuda um cara aqui no xtibia

- Desculpa deu um erro na hora que eu fui posta.

 

O que ele faz:

- O sistema consiste em defender % dos ataques recebidos.
Por Exemplo:
Com 1 de dodge, voce vai ter 10% de chance de defender. Com 10 de dodge (vocês podem editar) você vai ter 50% de chance de defender, cada pedra (8302) que voce usar, sua skill de dodge aumenta em 1 ponto, podendo no maximo ter 100 pontos
Vamos la.
em creaturescript:
dodgecombat.lua
local storagedodge = 98798644 -- storage do dodge
local cor = 35 -- cor do texto
local effect = 30 -- id do magic effect 
local msg = "DODGE!" -- msg
 
local dodge = { 
    {min = 1, max = 2, chance = 10}, -- se o dodge tiver entre 1 e 2 tem 10% de chance de da dodge.
    {min = 3, max = 4, chance = 20}, -- podem ser configurada portanto que não passe do limite
    {min = 5, max = 6, chance = 30}, -- vocês pode adicionar mas se quiserem
    {min = 7, max = 8, chance = 40},
    {min = 9, max = 10, chance = 45},
    {min = 11, max = math.huge, chance = 50}
}
 
function onStatsChange(cid, attacker, type, combat, value)
    if not isCreature(cid) then
        return false
    end
    for _, tudo in pairs(dodge) do
        if getPlayerStorageValue(cid, storagedodge) >= tudo.min and getPlayerStorageValue(cid, storagedodge) <= tudo.max then
            local chancex = math.random(1, 100)
            if chancex <= tudo.chance then
                if combat ~= COMBAT_HEALING then
                    doSendMagicEffect(getCreaturePosition(cid), effect)
                    doSendAnimatedText(getCreaturePosition(cid), msg, cor)
                    return false
                end
            end
        end
    end
    return true
end
Creaturescript.xml tag
<event type="StatsChange" name="CombatDodge" event="script" value="CombatDodge.lua"/>
Login.lua antes do ultimo return true
registerCreatureEvent(cid, "CombatDodge")
em action:
dodgestone.lua
local limite = 100 -- limite de dodge
local storagedodge = 98798644 -- storage do dodge
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    if getPlayerStorageValue(cid, storagedodge) == -1 then
        doPlayerSetStorageValue(cid, storagedodge, (getPlayerStorageValue(cid, storagedodge)) + 2)
        doPlayerSendCancel(cid, " DodgeSKILL:["..getPlayerStorageValue(cid, storagedodge).."/"..limite.."].")
    elseif getPlayerStorageValue(cid, storagedodge) >= -1 and getPlayerStorageValue(cid, storagedodge) <= limite then
        doPlayerSetStorageValue(cid, storagedodge, (getPlayerStorageValue(cid, storagedodge)) + 1)
        doPlayerSendCancel(cid, " DodgeSKILL:["..getPlayerStorageValue(cid, storagedodge).."/"..limite.."].")
        doRemoveItem(item.uid, 1)
    else
        doPlayerSendCancel(cid, "Voce ja chego no maximo.DodgeSKILL:["..getPlayerStorageValue(cid, storagedodge).."/"..limite.."]")
    end
    return true
end
action.xml tag
<action itemid="8302" event="script" value="dodgestone.lua"/>
Comente oque deve melhora, oque ta de errado.



DXBXk1i.gif

DuuhCarvalho

:)
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 19/01/12Posts: 988Gênero: MasculinoChar no Tibia: Xerife Woody

O primeiro script ficou bem simples de entender !

já o segundo ficou meio bagunçado , usa endentação nele .

 

 

Ótima ideia !.

RigBy

Katrina? Romero Brito?
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 05/02/14Posts: 411Gênero: MasculinoChar no Tibia: Zeh Sergipano

Eu tinha usado mas deu um problema quando eu fui coloca que o tópico fico todo bagunçado mas eu já ajeitei.

flw



DXBXk1i.gif

bulinho

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/11/08Posts: 14

fico bem loco o sistema com chance de falha parabens

Vinc

The white fox
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/10/11Posts: 625Gênero: Masculino

acho que ficaria melhor colocar um "return true" no fim do scopo do primeiro if depois do for,pra n continua o loop atoa.

e tbm coloca o valor da storage numa varivel, n tem nessecidade usar varias veses a função pra pegar o valor.

 

e pra que até 100 se so aumenta até o 11? trolagem com os player isso em.

^w^